how to generate 500 random numbers?(independent&uniform&between 0 to 1)

Hi all,
I found a code in the forum, but i don't know if the number produced are uniform and independent.

#include <iostream>
#include <ctime>
using namespace std;

//
// Generate a random number between 0 and 1
// return a uniform number in [0,1].
double unifRand()
{
return rand() / double(RAND_MAX);
}
//
// Generate a random number in a real interval.
// param a one end point of the interval
// param b the other end of the interval
// return a inform rand numberin [a,b].
double unifRand(double a, double b)
{
return (b-a)*unifRand() + a;
}
//
// Generate a random integer between 1 and a given value.
// param n the largest value
// return a uniform random value in [1,...,n]
long unifRand(long n)
{

if (n < 0) n = -n;
if (n==0) return 0;
/* There is a slight error in that this code can produce a return value of n+1
**
** return long(unifRand()*n) + 1;
*/
//Fixed code
long guard = (long) (unifRand() * n) +1;
return (guard > n)? n : guard;
}
//
// Reset the random number generator with the system clock.
void seed()
{
srand(time(0));
}


int main()
{
seed();
for (int i = 0; i < 500; ++i)
{
cout << unifRand() << endl;
}
return 0;
}

Many thx!!
Your code has the same guarantees as rand(). Uniform? Yes. Independent? Well there's a million ways to test independence. The standard C random number generator is not great, but it really depends on what you are doing. For most academic purposes it will suffice. For Monte Carlo simulations etc not even close.
Topic archived. No new replies allowed.