fix random scoping issue
parent
e0fdc89126
commit
01740ac7fb
|
@ -49,16 +49,20 @@ IN: math
|
||||||
|
|
||||||
: init-random ( seed -- )
|
: init-random ( seed -- )
|
||||||
#! Initialize the random number generator with a new seed.
|
#! Initialize the random number generator with a new seed.
|
||||||
|
global [
|
||||||
mt-n zero-array swap
|
mt-n zero-array swap
|
||||||
HEX: ffffffff bitand 0 pick set-nth
|
HEX: ffffffff bitand 0 pick set-nth
|
||||||
mt-n 1- [ 2dup mt-formula 1+ pick pick 1+ swap set-nth ] repeat
|
mt-n 1- [ 2dup mt-formula 1+ pick pick 1+ swap set-nth ] repeat
|
||||||
mt set 0 mti set
|
mt set 0 mti set
|
||||||
generate-mt ;
|
generate-mt
|
||||||
|
] bind ;
|
||||||
|
|
||||||
: (random-int) ( -- rand )
|
: (random-int) ( -- rand )
|
||||||
#! Generate a random integer between 0 and 2^32-1 inclusive.
|
#! Generate a random integer between 0 and 2^32-1 inclusive.
|
||||||
|
global [
|
||||||
mti get dup mt-n < [ drop generate-mt 0 ] unless
|
mti get dup mt-n < [ drop generate-mt 0 ] unless
|
||||||
mt-nth mt-temper mti inc ;
|
mt-nth mt-temper mti inc
|
||||||
|
] bind ;
|
||||||
|
|
||||||
: random-int ( n -- rand )
|
: random-int ( n -- rand )
|
||||||
#! Generate a random integer between 0 and n-1 inclusive.
|
#! Generate a random integer between 0 and n-1 inclusive.
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
IN: temporary
|
IN: temporary
|
||||||
USE: kernel
|
USING: errors kernel math namespaces sequences test ;
|
||||||
USE: lists
|
|
||||||
USE: math
|
|
||||||
USE: namespaces
|
|
||||||
USE: random
|
|
||||||
USE: test
|
|
||||||
USE: errors
|
|
||||||
|
|
||||||
: check-random-int ( max -- )
|
: check-random-int ( max -- )
|
||||||
dup random-int 0 rot between?
|
>r random-int 0 r> between? ;
|
||||||
[ "Assertion failed" throw ] unless ;
|
|
||||||
|
|
||||||
[ ] [ 100 [ 674 check-random-int ] times ] unit-test
|
[ t ] [ 100 [ 674 check-random-int ] all? ] unit-test
|
||||||
|
|
||||||
|
: make-100-random-ints
|
||||||
|
[ 100 [ 100 random-int , ] times ] { } make ;
|
||||||
|
|
||||||
|
[ f ] [ make-100-random-ints make-100-random-ints = ] unit-test
|
||||||
|
|
Loading…
Reference in New Issue