]> gitweb.factorcode.org Git - factor.git/blob - basis/random/mersenne-twister/mersenne-twister-tests.factor
ede3c92f517b60cd2acf4f2c5b2d7e3442a3c244
[factor.git] / basis / random / mersenne-twister / mersenne-twister-tests.factor
1 USING: kernel math random namespaces make
2 random.mersenne-twister sequences tools.test math.order ;
3 IN: random.mersenne-twister.tests
4
5 : check-random ( max -- ? )
6     [ random 0 ] keep between? ;
7
8 [ t ] [ 100 [ drop 674 check-random ] all-integers? ] unit-test
9
10 : randoms ( -- seq )
11     100 [ 100 random ] replicate ;
12
13 : test-rng ( seed quot -- )
14     [ <mersenne-twister> ] dip with-random ; inline
15
16 [ f ] [ 1234 [ randoms randoms = ] test-rng ] unit-test
17
18 [ 1333075495 ] [
19     0 [ 1000 [ drop random-generator get random-32* drop ] each-integer random-generator get random-32* ] test-rng
20 ] unit-test
21
22 [ 1575309035 ] [
23     0 [ 10000 [ drop random-generator get random-32* drop ] each-integer random-generator get random-32* ] test-rng
24 ] unit-test
25
26
27 [ 3 ] [ 101 [ 3 random-bytes length ] test-rng ] unit-test
28 [ 33 ] [ 101 [ 33 random-bytes length ] test-rng ] unit-test
29 [ t ] [ 101 [ 100 random-bits log2 90 > ] test-rng ] unit-test
30
31 [ t ]
32 [
33     1234 <mersenne-twister>
34     [ random-32* ] [ 1234 seed-random random-32* ] bi =
35 ] unit-test