implementation module Random import StdInt, StdClass import StdTime :: RandomSeed :== Int nullRandomSeed :: RandomSeed nullRandomSeed = 0 getNewRandomSeed :: !*env -> (!RandomSeed, !*env) | TimeEnv env getNewRandomSeed env # ({hours,minutes,seconds}, env) = getCurrentTime env = (1+(hours+minutes+seconds) bitand 65535, env) random :: !RandomSeed -> .(!Int,!RandomSeed) random seed = (newSeed,newSeed) where newSeed = if (nextSeed>=0) nextSeed (nextSeed+65537) nextSeed = (seed75 bitand 65535)-(seed75>>16) seed75 = seed*75