random: simplify using bitwise operations.

db4
John Benediktsson 2014-02-25 15:59:51 -08:00
parent a05c735731
commit 0fb0eaa1cf
3 changed files with 6 additions and 6 deletions

View File

@ -36,7 +36,7 @@ CONSTANT: a uint-array{ 0 0x9908b0df }
] [ 0 >>i drop ] bi ; inline ] [ 0 >>i drop ] bi ; inline
: init-mt-formula ( i seq -- f(seq[i]) ) : init-mt-formula ( i seq -- f(seq[i]) )
dupd nth dup -30 shift bitxor 1812433253 * + 1 + 32 bits ; inline dupd nth dup -30 shift bitxor 1812433253 * + 1 w+ ; inline
: init-mt-rest ( seq -- ) : init-mt-rest ( seq -- )
n 1 - swap '[ n 1 - swap '[

View File

@ -116,8 +116,8 @@ M:: sfmt generate ( sfmt -- )
[ [
[ [
[ -30 shift ] [ ] bi bitxor [ -30 shift ] [ ] bi bitxor
state-multiplier * 32 bits state-multiplier w*
] dip + 32 bits ] dip w+
] uint-array{ } accumulate-as nip ] uint-array{ } accumulate-as nip
dup uint-4 cast-array ; dup uint-4 cast-array ;

View File

@ -43,14 +43,14 @@ M:: cmwc random-32* ( cmwc -- n )
[ c>> + ] tri [ c>> + ] tri
[ >fixnum -32 shift cmwc c<< ] [ >fixnum -32 shift cmwc c<< ]
[ cmwc [ b>> bitand ] [ c>> + ] bi 32 bits ] bi [ cmwc [ b>> bitand ] [ c>> w+ ] bi ] bi
dup cmwc r>> > [ dup cmwc r>> > [
cmwc [ 1 + ] change-c drop cmwc [ 1 + ] change-c drop
cmwc b>> - 32 bits cmwc b>> w-
] when ] when
cmwc swap '[ r>> _ - 32 bits dup ] [ i>> ] [ Q>> ] tri set-nth-unsafe ; cmwc swap '[ r>> _ w- dup ] [ i>> ] [ Q>> ] tri set-nth-unsafe ;
: cmwc-4096 ( -- cmwc ) : cmwc-4096 ( -- cmwc )
4096 4096