allow random-32* or random-bytes* to generate randomness in terms of each other

db4
Doug Coleman 2008-03-28 13:50:23 -05:00
parent 3e2a867c3a
commit 8cf2fd88a5
4 changed files with 9 additions and 7 deletions

View File

@ -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

View File

@ -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

View File

@ -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 )
[

View File

@ -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> ;