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
|
||||
|
||||
[ 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
|
||||
|
||||
[ 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
|
||||
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ PRIVATE>
|
|||
M: mersenne-twister seed-random ( mt seed -- )
|
||||
init-mt-seq >>seq drop ;
|
||||
|
||||
M: mersenne-twister random-32 ( mt -- r )
|
||||
M: mersenne-twister random-32* ( mt -- r )
|
||||
dup [ seq>> ] [ i>> ] bi
|
||||
dup mt-n < [ drop 0 pick mt-generate ] unless
|
||||
new-nth mt-temper
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (C) 2008 Doug Coleman.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: alien.c-types kernel math namespaces sequences
|
||||
io.backend ;
|
||||
io.backend io.binary ;
|
||||
IN: random
|
||||
|
||||
SYMBOL: random-generator
|
||||
|
@ -12,11 +12,14 @@ HOOK: os-crypto-random-32 io-backend ( -- r )
|
|||
HOOK: os-random-32 io-backend ( -- r )
|
||||
|
||||
GENERIC: seed-random ( tuple seed -- )
|
||||
GENERIC: random-32 ( tuple -- r )
|
||||
GENERIC: random-32* ( tuple -- r )
|
||||
GENERIC: random-bytes* ( tuple n -- bytes )
|
||||
|
||||
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 )
|
||||
[
|
||||
|
|
|
@ -26,4 +26,3 @@ M: windows-cryptographic-rng random-bytes* ( tuple n -- bytes )
|
|||
dup f f PROV_RSA_AES CRYPT_NEWKEYSET
|
||||
CryptAcquireContextW win32-error=0/f *void*
|
||||
<windows-crypto-context> ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue