I have noticed that the rand function in the C run-time
library returns a sequence of odd number followed by even
number. Can you tell me why this is. It happens with VAXC
on VAX and DEC C on Alpha. This is segment of code which
shows the behaviour.
printf("enter a seed :");
seed = atoi(buffer);
if (seed != 0)
/* just print low order bit to evaluate odd or even */
for (i = 0; i < 100; i++)
printf("random number = %d\n", (rand() & 0x1));
The Answer is:
The algorithm used is the one specified by the ANSI C standard. It is not
very good, as you have discovered. For a better routine, see the description
of "random" in the DEC C Run-Time Library Reference Manual.