On 6 dec 2003, at 20:26, jordi wrote:


Randomize initialises the random number generator based on the current
system time. So if you call it multiple times in a short time period,
you will get a similar (or even the same) randseed.

With this, you have answered perfectly my question, to get a diferent
sequence can I set randseed in a diferent way?

There are no different sequences. All pseudo-random generators have one circular sequence. The better the generator, the longer this sequence is.


for example:

Procedure set_new_random_seed;
  begin
    randseed := who knows yet...
  end;

For loop := 1 to 100 do begin
  set_new_random_seed;
  writeln (random (1000) +1);
end;

You mean you want to write something like the "first" random number of 100 "different sequences"?


Thank you very much.

Note that you *cannot* save randseed in the middle of a sequence, and later restore it again to continue that particular sequence. The reason is that the random generator internally uses 3 random seeds (in 1.0.x) and several more in 1.1. If you change randseed, the random generator is reinitialised with this new seed, but the resulting sequence is different from what you would have gotten if you just continued previously (since only one of the randseeds is initialised by you, the rest is based on that one value).


This is different from TP/Delphi, which use only one randseed, so saving/restoring this one randseed is enough to save/restore the whole of the random generator. However, it still allows for perfectly reproducible random number sequences (if you set randseed to 5, print some random number and then set randseed again to 5, the following numbers will be the same as the first ones, because the newly calculated state will be the same as the first one).


Jonas



_______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to