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>