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
In reply to Re: Your random numbers are not that random (UtS,L)
by tye
in thread Your random numbers are not that random
by davies
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |