[fpc-pascal] Better random numbers ?
Jonas Maebe
jonas.maebe at elis.ugent.be
Fri Mar 3 13:32:02 CET 2006
On 27 feb 2006, at 09:41, Vincent Snijders wrote:
>>> Some other workaround that comes to my mind is to do something like
>>> Randomize;
>>> RandSeed := RandSeed * getpid;
>> This worked, cut the initial generation time from about 30 seconds
>> down to under 1, of course right now it's NOT platform independent
>> at all so I will need to enhance it but I like the direction of
>> your thinking, combining randseed with some virtually guaranteed
>> unique value solves the problem.
>
> Maybe you use a global variable and just add one for each randseed
> call. After all the only thing that matters for the randseed, is
> that it is different.
>
> BTW, I never would have guessed that the random number generator
> would have used threadvars.
It doesn't currently.
> I would have thought, that on app start you would set one randseed
> and then call random from all threads.
Every time you call random, the current randseed is read, some
calculations are performed and a new value is stored in the randseed
variable. So if two threads call random "at the same time", then both
will use the same randseed value and thus return the same random
value (in the -current- case that randseed is not a threadvar).
Jonas
More information about the fpc-pascal
mailing list