export <blum-blum-shub> in random.blum-blum-shub
parent
aae907d5e1
commit
9f46b534e9
|
@ -30,4 +30,4 @@ IN: project-euler.164
|
|||
PRIVATE>
|
||||
|
||||
: euler164 ( -- n )
|
||||
init-table 19 [ next-table ] times values sum ;
|
||||
init-table 19 [ next-table ] times values sum ;
|
||||
|
|
|
@ -12,17 +12,16 @@ TUPLE: blum-blum-shub x n ;
|
|||
: generate-bbs-primes ( numbits -- p q )
|
||||
[ [ random-prime ] curry [ 4 mod 3 = ] generate ] dup bi ;
|
||||
|
||||
: next-bbs-bit ( bbs -- bit )
|
||||
[ [ x>> 2 ] [ n>> ] bi ^mod dup ] keep (>>x) 1 bitand ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: <blum-blum-shub> ( numbits -- blum-blum-shub )
|
||||
generate-bbs-primes *
|
||||
[ find-relative-prime ] keep
|
||||
blum-blum-shub boa ;
|
||||
|
||||
: next-bbs-bit ( bbs -- bit )
|
||||
[ [ x>> 2 ] [ n>> ] bi ^mod ] keep
|
||||
over >>x drop 1 bitand ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
M: blum-blum-shub random-32* ( bbs -- r )
|
||||
0 32 rot
|
||||
[ next-bbs-bit swap 1 shift bitor ] curry times ;
|
||||
|
|
Loading…
Reference in New Issue