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

Generating two ( or multiple) uniformly distributed random numbers c++

本文关键字:分布 随机数 两个      更新时间:2023-10-16

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

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

在main中我是这样调用的:

# 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;
}

我得到这两个数字是相同的(我猜是秒的时间限制),无论如何,这是我想推广到多个随机数。

有谁能提出更好的方法吗?也许使用不同的方法或库?

在使用rand之前,不要每次都调用srand
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;
}