To: Damien Doligez <Damien.Doligez@inria.fr>
Subject: Re: Random.int on non unix platform
Date: Tue, 29 Jun 1999 01:35:31 +0300
From: Martin Quinson <mquinson@zeppelin-cb.de>
Message-Id: <E10ykw0-0001U5-00@nestor>
> >From: Martin Quinson <mquinson@zeppelin-cb.de>
> =
> >How can I write this without the unix library ?
> >
> >Random.init (int_of_float (Unix.time ()));;
> =
> You can do:
> =
> Random.init (int_of_float (Sys.time ()));;
> =
> or you can input a random seed from the user and give it as argument
> to Random.init.
(francais en bas)
hmmm. from htmlman/module sys :
> val time: unit -> float
>
> Return the processor time, in seconds, used by the program sin=
ce the
> beginning of execution.
So, if this call is at the begining of the programm, it will allways gene=
rate =
the same number (or almost). from the random.ml source code :
(* Simple initialisation. The seed is an integer.
Two seeds that are close enough will not produce uncorrelated
pseudo-random sequences.
*)
And I really dislike the second solution...
Maybe would it be possible to make the module Random initialize itself al=
one =
before the first call, in the next release...
[en francais]
J'aimerais initialiser le generateur aléatoire de nombre sans utiliser =
la =
librairie Unix. Dans d'autres langage, j'ai l'habitude d'utiliser l'heure=
pour =
ca, mais, apparament, c'est impossible sans la librairie Unix (ce qui n'e=
st =
pas portable, oblige a recompiler le top-level et complique la ligne de =
compilation des compilateurs)
Quant à l'idée de demander une graine à l'utilisateur, je trouve ca=
un peu =
préhistorique, comme approche. ;)
A mon avis, le plus simple serait encore que le module Random se charge t=
out =
seul comme un grand de s'initialiser sans demander a l'utilisateur de le =
faire.
(dans une prochaine version ?)
Merci & thanks,
Martin.
This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:22 MET