Date: Mon, 7 Apr 2003 09:01:20 -0500 From: Eric Timme <timothy@voidnet.com>(by way of Eric Timme <timothy@voidnet.com>) To: freebsd-stable@freebsd.org Subject: 4-stable and C rand()? Message-ID: <200304070901.20557.timothy@voidnet.com>
next in thread | raw e-mail | index | archive | help
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@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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304070901.20557.timothy>
