in reply to Your random numbers are not that random
You have easy access to the full source code and you have a string that is not hard to search for. But, when you get an error message that doesn't make enough sense to you, you can also just check perldiag, which says:
(F) When trying to initialise the random seed for hashes, Perl could not get any randomness out of your system. This usually indicates Something Very Wrong.
Which means you need to go look at the source code anyway. It was very easy for me to find this:
UV Perl_get_hash_seed(pTHX) { dVAR; const char *s = PerlEnv_getenv("PERL_HASH_SEED"); UV myseed = 0; if (s) while (isSPACE(*s)) s++; if (s && isDIGIT(*s)) myseed = (UV)Atoul(s); else #ifdef USE_HASH_SEED_EXPLICIT if (s) #endif { /* Compute a random seed */ (void)seedDrand01((Rand_seed_t)seed()); myseed = (UV)(Drand01() * (NV)UV_MAX); #if RANDBITS < (UVSIZE * 8) /* Since there are not enough randbits to to reach all * the bits of a UV, the low bits might need extra * help. Sum in another random number that will * fill in the low bits. */ myseed += (UV)(Drand01() * (NV)((((UV)1) << ((UVSIZE * 8 - RANDBI +TS))) - 1) »); #endif /* RANDBITS < (UVSIZE * 8) */ if (myseed == 0) { /* Superparanoia. */ myseed = (UV)(Drand01() * (NV)UV_MAX); /* One more chanc +e. */ if (myseed == 0) Perl_croak(aTHX_ "Your random numbers are not that r +andom"); } } PL_rehash_seed_set = TRUE; return myseed; }
Which suggests that a quick, temporary work-around might be to put some integer into your PERL_HASH_SEED environment variable.
- tye
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Your random numbers are not that random (UtS,L)
by davies (Monsignor) on Jul 21, 2012 at 23:06 UTC | |
by Anonymous Monk on Jul 22, 2012 at 09:11 UTC | |
by dsheroh (Monsignor) on Jul 22, 2012 at 09:23 UTC | |
by davies (Monsignor) on Jul 22, 2012 at 11:04 UTC | |
by Anonymous Monk on Jul 22, 2012 at 19:26 UTC | |
by cavac (Prior) on Jul 22, 2012 at 19:40 UTC | |
|