techie11
techie11

Reputation: 1387

Random number starting points

The awk manual says srand "sets the seed (starting point) for rand()". I used srand(5) with the following code:

awk 'BEGIN {srand(5);while(1)print rand()}'> /var/tmp/rnd

It generates numbers like:

0.177399
0.340855
0.0256178
0.838417
0.0195347
0.29598

Can you explain how srand(5) generates the "starting point" with the above output?

Upvotes: 1

Views: 336

Answers (2)

Lee Daniel Crocker
Lee Daniel Crocker

Reputation: 13181

PRNGs (pseudo-random number generators) produce random values by keeping some kind of internal state which can be advanced through a series of values whose repeating period is very large, and whose successive values have very few apparent statistical correlations as long as we use far fewer of them. But nonetheless, its values are a deterministic sequence.

"Seeding" a PRNG is basically selecting what point in the deterministic sequence to start at. The algorithm will take the number passed as the seed and compute (in some algorithm-specific way) where to start in the sequence. The actual value of the seed is irrelevant--the algorithm should not depend on it in any way.

But, although the seed value itself does not directly participate in the PRNG algorithm, it does uniquely identify the starting point in the sequence, so if you give a particular seed and then generate a sequence of values, seeding again with the same value should cause the PRNG to generate the same sequence of values.

Upvotes: 1

jim mcnamara
jim mcnamara

Reputation: 16389

The starting point is called the seed. It is given to the first iteration of the rand function. After that rand uses the previous value it got when calculating the old number -- to generate the next number. Using a prime number for the seed is a good idea.

Upvotes: 1

Related Questions