staload TIME = "libc/SATS/time.sats"
extern fun rand (): int
extern fun srand (seed: ulint): void
local
var next: ulint = 1UL val next = ref_make_view_ptr {ulint} (view@ (next) | &next)
in
implement rand () = let
val n = !next * 1103515245UL + 12345UL
val () = !next := n
val quot = uint_of_ulint (n / 65536UL)
val quot = uint1_of_uint (quot)
in
quot uimod 32768
end
implement srand (seed) = !next := seed
end
implement main () = let
val t = $TIME.time_get ()
val t = $TIME.lint_of_time t
val () = srand (ulint_of_lint t)
val r0 = rand ()
val () = (print "r0 = "; print r0; print_newline ())
val r1 = rand ()
val () = (print "r1 = "; print r1; print_newline ())
val r2 = rand ()
val () = (print "r2 = "; print r2; print_newline ())
in
end