Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.c    |    Meh, in C you gotta define EVERYTHING    |    243,242 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 242,520 of 243,242    |
|    Janis Papanagnou to James Kuyper    |
|    Re: srand(0)    |
|    22 Dec 25 18:41:10    |
      From: janis_papanagnou+ng@hotmail.com              On 2025-12-22 18:13, James Kuyper wrote:       > On 2025-12-22 07:18, Janis Papanagnou wrote:       >> On 2025-12-22 12:44, James Kuyper wrote:       >>> On 2025-12-22 03:48, Michael Sanders wrote:       >>>> Is it incorrect to use 0 (zero) to seed srand()?       >>>>       >>>> int seed = (argc >= 2 && strlen(argv[1]) == 9)       >>>> ? atoi(argv[1])       >>>> : (int)(time(NULL) % 900000000 + 100000000);       >>>>       >>>> srand(seed);       >>>       >>> No, why whould you think so?       >>       >> There's number sequence generators that produce 0 sequences if seeded       >> with 0. ...       >       > The details of how the seed affects the random number sequence are       > unspecified by the standard. I personally would consider a pseudo-random       > number generator to be quite defective if there were any seed that       > produced a constant output.              I wouldn't have mentioned that if there weren't a whole class of       such functions that expose exactly that behavior by design. Have       a look for PN-(Pseudo Noise-)generators and LFSR (Linear Feedback       Shift Registers). These have been defined to produce random noise       (bit pattern with good statistical distribution). With sophisticated       generator polynomials they produce also sequences of maximum period;       say, for N=31 a non-repeating sequence of length 2^N - 1. The one       element that is missing from the sequence is the 0 (that reproduces       itself).              Technically you pick some bit-values from fixed positions (depending       on the generator polynomial) of the register and xor the bits to shift       the result into the register. Here's ad hoc an example...              #include |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca