] unit-test
[ t ] [
- cmwc-4096
- 4096 iota >array seed-random [
- 10 [ random-32 ] replicate
- ] with-random
-
- cmwc-4096
- 4096 iota >array seed-random [
- 10 [ random-32 ] replicate
- ] with-random =
+ cmwc-4096 [
+ 4096 iota >array 362436 <cmwc-seed> seed-random [
+ 10 [ random-32 ] replicate
+ ] with-random
+ ] [
+ 4096 iota >array 362436 <cmwc-seed seed-random [
+ 10 [ random-32 ] replicate
+ ] with-random
+ ] bi =
] unit-test
dup b>> 1 - >>r
dup Q>> length 1 - >>mod ;
+: <cmwc-seed> ( Q c -- cmwc-seed )
+ cmwc-seed new
+ swap >>c
+ swap >>Q ; inline
+
M: cmwc seed-random
- [ >>Q ]
- [ length 1 - >>i ] bi ;
+ [ Q>> >>Q ]
+ [ Q>> length 1 - >>i ]
+ [ c>> >>c ] tri ;
M:: cmwc random-32* ( cmwc -- n )
cmwc dup mod>> '[ 1 + _ bitand ] change-i