allow random-32* or random-bytes* to generate randomness in terms of each other
parent
3e2a867c3a
commit
8cf2fd88a5
|
@ -16,11 +16,11 @@ IN: random.mersenne-twister.tests
|
||||||
[ f ] [ 1234 [ make-100-randoms make-100-randoms = ] test-rng ] unit-test
|
[ f ] [ 1234 [ make-100-randoms make-100-randoms = ] test-rng ] unit-test
|
||||||
|
|
||||||
[ 1333075495 ] [
|
[ 1333075495 ] [
|
||||||
0 [ 1000 [ drop random-generator get random-32 drop ] each random-generator get random-32 ] test-rng
|
0 [ 1000 [ drop random-generator get random-32* drop ] each random-generator get random-32* ] test-rng
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
[ 1575309035 ] [
|
[ 1575309035 ] [
|
||||||
0 [ 10000 [ drop random-generator get random-32 drop ] each random-generator get random-32 ] test-rng
|
0 [ 10000 [ drop random-generator get random-32* drop ] each random-generator get random-32* ] test-rng
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ PRIVATE>
|
||||||
M: mersenne-twister seed-random ( mt seed -- )
|
M: mersenne-twister seed-random ( mt seed -- )
|
||||||
init-mt-seq >>seq drop ;
|
init-mt-seq >>seq drop ;
|
||||||
|
|
||||||
M: mersenne-twister random-32 ( mt -- r )
|
M: mersenne-twister random-32* ( mt -- r )
|
||||||
dup [ seq>> ] [ i>> ] bi
|
dup [ seq>> ] [ i>> ] bi
|
||||||
dup mt-n < [ drop 0 pick mt-generate ] unless
|
dup mt-n < [ drop 0 pick mt-generate ] unless
|
||||||
new-nth mt-temper
|
new-nth mt-temper
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2008 Doug Coleman.
|
! Copyright (C) 2008 Doug Coleman.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: alien.c-types kernel math namespaces sequences
|
USING: alien.c-types kernel math namespaces sequences
|
||||||
io.backend ;
|
io.backend io.binary ;
|
||||||
IN: random
|
IN: random
|
||||||
|
|
||||||
SYMBOL: random-generator
|
SYMBOL: random-generator
|
||||||
|
@ -12,11 +12,14 @@ HOOK: os-crypto-random-32 io-backend ( -- r )
|
||||||
HOOK: os-random-32 io-backend ( -- r )
|
HOOK: os-random-32 io-backend ( -- r )
|
||||||
|
|
||||||
GENERIC: seed-random ( tuple seed -- )
|
GENERIC: seed-random ( tuple seed -- )
|
||||||
GENERIC: random-32 ( tuple -- r )
|
GENERIC: random-32* ( tuple -- r )
|
||||||
GENERIC: random-bytes* ( tuple n -- bytes )
|
GENERIC: random-bytes* ( tuple n -- bytes )
|
||||||
|
|
||||||
M: object random-bytes* ( tuple n -- byte-array )
|
M: object random-bytes* ( tuple n -- byte-array )
|
||||||
[ drop random-32 ] with map >c-uint-array ;
|
[ drop random-32* ] with map >c-uint-array ;
|
||||||
|
|
||||||
|
M: object random-32* ( tuple -- n )
|
||||||
|
4 random-bytes* le> ;
|
||||||
|
|
||||||
: random-bytes ( n -- r )
|
: random-bytes ( n -- r )
|
||||||
[
|
[
|
||||||
|
|
|
@ -26,4 +26,3 @@ M: windows-cryptographic-rng random-bytes* ( tuple n -- bytes )
|
||||||
dup f f PROV_RSA_AES CRYPT_NEWKEYSET
|
dup f f PROV_RSA_AES CRYPT_NEWKEYSET
|
||||||
CryptAcquireContextW win32-error=0/f *void*
|
CryptAcquireContextW win32-error=0/f *void*
|
||||||
<windows-crypto-context> ;
|
<windows-crypto-context> ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue