Oops. Nevermind. — Sent from Mailbox On Thu, May 22, 2014 at 8:12 PM, Nathan Mishra Linger wrote: > I think the problem is that you aren't *calling* Random.self_init. To do so, change the line >   let _ = Random.self_init > to >   let () = Random.self_init () > The value that _ is matching against in your program has type unit -> unit rather than just unit.  > — > Sent from Mailbox > On Wed, May 21, 2014 at 8:12 AM, Ollie Frolovs > wrote: >> Hello >> I’ve been trying to use Random.self_init in Jane Street’s Core but every time I run my program it returns the same result as if the self_init is in fact completely deterministic. Two questions – what am I doing wrong and how do I make it “random” (as in returning different values on each run of the application). >> I compile the following source into native code with “corebuild”. >> When I run the program, the result is ALWAYS >> 1 0 >> 1 1 >> 0 1 >> 0 2 >> 0 3 >> I’ve also upload the code and the output from "opam list -i” on GitHub, if that’s more convenient https://gist.github.com/olliefr/d6312d8195e9a30aa80c >> I believe I have the latest compiler/libraries. The system is OS X Mavericks. >> Many thanks, >> Ollie >> -- >> (* SOURCE CODE BEGINS *) >> open Core.Std >> >> let _ = Random.self_init >> (* >> FIXME there must be something in the standard library to do this! >> >> Iterate a function over a value, tail-recursively. >> n: how many times >> f: function to apply >> a: initial value of the argument >> *) >> let rec iterate n f a = >> if n<=0 >> then a >> else iterate (n-1) f (f a) >> (* Wandering Light *) >> let light = (0,0) >> let wander (x,y) = >> match (1 + Random.int 4) with >> 1 -> (x+1, y) >> | 2 -> (x, y+1) >> | 3 -> (x-1, y) >> | 4 -> (x, y+1) >> | _ -> failwith "random direction is not 1 to 4, wtf?" >> >> let render (x,y) = printf "%i %i\n" x y >> >> let step light = >> let newlight = wander light in >> render newlight; >> newlight >> >> let _ = iterate 5 step (0,0) >> (* THE END *) >> -- >> Caml-list mailing list. Subscription management and archives: >> https://sympa.inria.fr/sympa/arc/caml-list >> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >> Bug reports: http://caml.inria.fr/bin/caml-bugs