From: Ollie Frolovs <ollie.frolovs.2012@my.bristol.ac.uk>
To: caml users <caml-list@inria.fr>
Subject: [Caml-list] Random.self_init in Jane Street Core
Date: Wed, 21 May 2014 13:10:36 +0100 [thread overview]
Message-ID: <762DAB52-9D2E-4002-80B0-526258DD7856@my.bristol.ac.uk> (raw)
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 *)
next reply other threads:[~2014-05-21 12:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-21 12:10 Ollie Frolovs [this message]
2014-05-21 12:18 ` Dmitry Grebeniuk
2014-05-21 12:25 ` Ollie Frolovs
2014-05-21 12:28 ` David House
2014-05-21 16:40 ` Martin Jambon
2014-05-22 9:01 ` Ben Millwood
2014-05-22 17:22 ` Martin Jambon
2014-05-23 0:12 ` Nathan Mishra Linger
2014-05-23 0:15 ` Nathan Mishra Linger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=762DAB52-9D2E-4002-80B0-526258DD7856@my.bristol.ac.uk \
--to=ollie.frolovs.2012@my.bristol.ac.uk \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox