(* * $Id: random.ocaml,v 1.10 2001/07/26 01:33:45 doug Exp $ * http://www.bagley.org/~doug/shootout/ * with help from Markus Mottl *) let im = 139968 let ia = 3877 let ic = 29573 let last_ref = ref 42 let gen_random max = let new_last = (!last_ref * ia + ic) mod im in last_ref := new_last; max *. float_of_int new_last /. float im let _ = let n = try int_of_string Sys.argv.(1) with Invalid_argument _ -> 1 in let rec loop i = let r = gen_random 100.0 in if i > 1 then loop (i-1) else r in Printf.printf "%.9f\n" (loop n)