Re: randomize/0 doesn't work (further comments)

Daniel Diaz <[email protected]>
Newsgroups gmane.comp.gnu.prolog.bugs
Message-ID <[email protected]>
Hi,

you are right and I have fixed this in the version 1.2.15 which will be
released soon.
Thank you

[email protected] wrote:
> 
> After sending the message below I took another look at the code and
> realized that even with the absolute instead of the relative time, line
> 790 of machine.c re-seeds the random number generator with an integer in
> the range 0..255; so there are only 256 possible seeds for a generator
> that ought to be able to do much better than that.
> 
> I don't understand why line 790 exists at all; it looks to me like it
> would be safe, and sensible, to delete that line entirely.  Another
> possibility would be to replace the yucky hardcoded constant 256 with
> RAND_MAX, so we don't lose more information than necessary by re-seeding
> the generator.
> --
> Matthew Skala
> [email protected]                    Embrace and defend.
> http://ansuz.sooke.bc.ca/
> 
> ---------- Forwarded message ----------
> Date: Sat, 17 Aug 2002 17:55:15 -0400 (EDT)
> From: [email protected]
> To: [email protected]
> Subject: randomize/0 doesn't work (fix included)
> 
> I have a program that calls randomize/0 in its initialization.  It usually
> gets the same random seed, because although randomize/0 is documented as
> using "a random value depending on the absolute time", it actually gets
> its seed by calling M_Real_Time(), which is the number of milliseconds
> since the process started.
> 
> If I compile my code and put randomize/0 in the initialization, then as
> long as my system load stays reasonably low, the number of milliseconds
> between process start and the randomize/0 call will be the same every
> time, and so I get the same seed value every time.  That's not what I
> want, nor what the documentation leads me to expect.
> 
> I suggest changing line 789 of src/EnginePL/machine.c from:
> 
>   M_Set_Seed(M_Real_Time());
> 
> to
> 
>   M_Set_Seed(M_Real_Time() + start_real_time);
> 
> That way it uses the current time, as documented.
> --
> Matthew Skala
> [email protected]                    Embrace and defend.
> http://ansuz.sooke.bc.ca/
> 
> _______________________________________________
> Bug-prolog mailing list
> [email protected]
> http://mail.gnu.org/mailman/listinfo/bug-prolog
> 
> --
> Ce message a subi une analyse antivirus
> par MailScanner ; il est vraisemblablement
> sans danger.

--
Ce message a subi une analyse antivirus 
par MailScanner ; il est vraisemblablement
sans danger.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.