diff options
author | Camil Staps | 2016-02-02 19:24:50 +0100 |
---|---|---|
committer | Camil Staps | 2016-02-02 19:24:50 +0100 |
commit | a7d7542dc646a5fd124ef71e71ce260889f1701b (patch) | |
tree | 04ed89503bbb3cc9933273a1326a53ca724c3492 /1415/files/practicum/Random.icl | |
parent | week6 camil: working positioning of lines by putting empties at left and righ... (diff) |
Diffstat (limited to '1415/files/practicum/Random.icl')
-rw-r--r-- | 1415/files/practicum/Random.icl | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/1415/files/practicum/Random.icl b/1415/files/practicum/Random.icl new file mode 100644 index 0000000..2983656 --- /dev/null +++ b/1415/files/practicum/Random.icl @@ -0,0 +1,23 @@ +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
|