24 lines
547 B
Text
24 lines
547 B
Text
func mul32 a b .
|
|
# to avoid overflow with 53bit integer precision with double
|
|
ah = a div 0x10000
|
|
al = a mod 0x10000
|
|
bh = b div 0x10000
|
|
bl = b mod 0x10000
|
|
return al * bl + al * bh * 0x10000 + bl * ah * 0x10000
|
|
.
|
|
global state_bsd state_ms .
|
|
func rand_bsd .
|
|
state_bsd = (mul32 1103515245 state_bsd + 12345) mod 0x80000000
|
|
return state_bsd
|
|
.
|
|
func rand_ms .
|
|
state_ms = (214013 * state_ms + 2531011) mod 0x80000000
|
|
return state_ms div 0x10000
|
|
.
|
|
for i = 1 to 5
|
|
print rand_bsd
|
|
.
|
|
print ""
|
|
for i = 1 to 5
|
|
print rand_ms
|
|
.
|