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.
#include
#include
int main()
{
int i;
int seed;
char buffer[80];
printf("enter a seed :");
gets(buffer);
seed = atoi(buffer);
if (seed != 0)
srand(seed);
/* 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.