生成两个(或多个)均匀分布的随机数c ++

时间:2015-09-25 06:00:30

标签: c++ random

我想在同一个传递中生成几个均匀分布的随机数。 到目前为止,我有一个"标准"用于生成随机数的函数

double generateRandomNumber()
{
    srand((unsigned)time(NULL));
    double r=((double)rand()/(double)RAND_MAX);
    return r;
}

在主要时我怎么称呼它:

# include <iostream>
# include <string>
# include <cmath>
# include <ctime>

int main()
{

    // generate random number
    double rr1=generateRandomNumber();
    double rr2=generateRandomNumber();
    cout << rr1 << endl;
    cout << rr2 << endl;
    return 0;
}

我知道这两个数字是相同的(我猜它是秒的时间限制),无论如何,这是我想要多个随机数。

有人能建议更好的方法吗?也许使用不同的方法或库?

1 个答案:

答案 0 :(得分:1)

每次使用srand时,请勿致电rand srand只应在程序开始时调用一次。

您可以使用静态变量来查看先前是否调用了srand

double generateRandomNumber()
{
    static bool initialized = false;
    if (!initialized)
    {
        srand((unsigned)time(NULL));
        initialized = true;
    }
    double r=((double)rand()/(double)RAND_MAX);
    return r;
}