in reply to Re^5: Getting srand's seed
in thread Getting srand's seed

I seem to have $Config{randbits} = 48 and  $Config{longsize} = 4. But using $seed = int(rand(2**$Config{randbits} - 1)); produced very poor results. Even when the seed was different, I would get the same series random numbers using my $pick = int(rand(1e9))+1;

In any case, it's not important because I am now using Math::Random::MT, and its srand() function takes unsigned 32-bit integers. Thus I have to produce my seed between 0 and 2**32-1.

It worked quite well, but I noticed that I would get the same seed when my program was called several times in a short time frame. So I had to seed the PRNG with a fast-moving seed first before I could produce my actual random seed.

use Math::Random::MT qw(srand rand); I'm quite happy now with the result. I appreciate your advices GrandFather. The final code looks like this:
use Math::Random::MT qw(srand rand); sub seed_prng { # Seed the pseudo random number generator with a random or specified + seed # Returns what seed value is used my ($seed) = shift; if (not defined $seed) { # Want to produce an random unsigned 32-bit integer to feed to # Math::Random::MT::srand(). That means, first seed srand() with a + temporary # seed that varies quickly in time so we don't get twice the same +seed if we # request several seeds in a short interval of time. my $tmp_seed = time ^ ($$ + ($$ << 15)); # shown in srand's doc srand($tmp_seed); my $max = int(2**32-1); # Largest unsigned 32-bit integer $seed = int(rand($max+1)); # An integer between 0 and $max } srand($seed); return $seed; }