1 implementation module RandomExt
4 import StdClass, StdInt, StdString
8 :: RandomSeed = RS !Int
11 nullRandomSeed :: RandomSeed
15 getNewRandomSeed :: !*env -> (!RandomSeed, !*env) | TimeEnv env
17 # ({hours,minutes,seconds}, env) = getCurrentTime env
18 = (RS (1+(hours+minutes+seconds) bitand 65535), env)
20 random :: !RandomSeed -> (!Int,!RandomSeed)
22 = (newSeed,RS newSeed)
24 newSeed = if (nextSeed>=0) nextSeed (nextSeed+65537)
25 nextSeed = (seed75 bitand 65535)-(seed75>>16)
28 instance toString RandomSeed where toString (RS r) = toString r
29 instance fromString RandomSeed where fromString str = RS (fromString str)
30 instance == RandomSeed where == (RS r1) (RS r2) = r1 == r2