4-stable and C rand()?
Eric Timme
timothy at voidnet.com
Mon Apr 7 07:01:20 PDT 2003
Hi everyone, sorry if this has been answered before - I caught a whiff of a
discussion about c's rand() function in a mailing list archive, but couldn't
find a definitive answer.
I'm trying to do a simple CS project on my machine where I generate two sets
of values in parallel using rand() and am running into infinite loops of
values, and couldn't figure out why, so I wrote a test program:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
int a, b;
srand((unsigned)time(0));
for (int i=0 ; i < 50 ; i++)
cout << rand() % 32 << " " << rand() % 4 << endl;
return 0;
}
No matter how many times I run this it seems to alternate between generating
two different but non-unique sets of values, depending on whether time(0) is
even or odd..and I can't understand why (values at the end of this message).
My uname -a is:
FreeBSD repose 4.8-RC FreeBSD 4.8-RC #0: Mon Mar 24 09:13:35 CST 2003
timothy at repose:/usr/obj/usr/src/sys/Repose i386
It seems like the consensus on the thread I read was to use /dev/random or
/dev/urandom..but this isn't really an option for a CS project a TA has to
grade, so I've had to SSH out to finish the project. I just want to know
what I'm doing wrong, and why I can't do this on my FreeBSD machine =\
The two value loops are:
22 1
4 3
2 1
16 3
14 1
28 3
26 1
8 3
6 1
20 3
18 1
0 3
30 1
12 3
10 1
24 3
22 1
4 3
2 1
16 3
14 1
28 3
26 1
8 3
6 1
20 3
18 1
0 3
and
19 2
9 0
15 2
5 0
11 2
1 0
7 2
29 0
3 2
25 0
31 2
21 0
27 2
17 0
23 2
13 0
19 2
9 0
15 2
5 0
11 2
1 0
7 2
29 0
3 2
25 0
31 2
21 0
27 2
17 0
23 2
13 0
19 2
Thanks for any insight you can lend.
More information about the freebsd-stable
mailing list