[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