(Second send, it seems that mails from my old email address do not reach fpc lists)

Antal wrote:

It's not just that, but randseed is not a threadvar. This means that
all your threads use the same randseed variable, so if two threads
call "random" at the same time they will still get the same "random"
number.


Jonas

And also generating a rand * getpid you can't really get good random numbers. I just made a withdrawal program on this idea, so I've got several repetitions, and upon executing a program again and agian I've got false random numbers, like: a*n; a*(n+1); a*(n+2).
That's not a solution anyway.

Maybe a bit shifting or some aritmetical function can help to obtain a more random "looking" number.


Like Vinzent pointed out, such tricks are not a really good solution. It
seems that most of the thread "Better random numbers ?" concentrated on
my trick with "RandSeed := RandSeed * getpid;". But this *was meant to
be* just a dirty hack, dirty idea, dirty workaround, whatever.

If you want a real, good solution, see the first part of my initial
response. Quoting myself:

"
The proper solution is to use some system-wide generator, that doesn't
have to be initialized every time you initialize your program. On Unix,
just read /dev/urandom, this should return pseudo-random numbers. On
Windows I guess that you will have to do something like that on your own
(e.g. write a program in FPC that runs as a service and can be queried
for random numbers). (Or you can use Cygwin routines to read Cygwin's
/dev/urandom --- never done it, but it should be possible).
"

In other words, don't waste too much time trying to improve the
"RandSeed := RandSeed * getpid;" trick.

Michalis
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to