我想在同一个传递中生成几个均匀分布的随机数。 到目前为止,我有一个"标准"用于生成随机数的函数
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;
}
我知道这两个数字是相同的(我猜它是秒的时间限制),无论如何,这是我想要多个随机数。
有人能建议更好的方法吗?也许使用不同的方法或库?
答案 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;
}