Skip site navigation (1)Skip section navigation (2)
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>