On Thu, May 22, 2014 at 8:12 PM, Nathan Mishra Linger <nathan.mishralinger@gmail.com> wrote:
I think the problem is that you aren't *calling* Random.self_init. To do so, change the linelet _ = Random.self_inittolet () = Random.self_init ()The value that _ is matching against in your program has type unit -> unit rather than just unit.—
Sent from MailboxOn Wed, May 21, 2014 at 8:12 AM, Ollie Frolovs <ollie.frolovs.2012@my.bristol.ac.uk> 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