生成两个(或多个)均匀分布的随机数
Generating two ( or multiple) uniformly distributed random numbers c++
我想在同一遍中生成几个均匀分布的随机数。到目前为止,我有一个"标准"函数来生成随机数
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;
}
相关文章:
- C++随机数分布传递给函数
- 在编译时选择随机数分布
- 从提升二项分布中抽取随机数
- 在 c++ 中创建具有指数分布的随机数(可视化标准)
- 用具有不同范围的均匀分布的随机数填充多维矩阵
- 是否有在 c++ 中使用三角分布生成随机数的函数
- 生成C++中的正态分布随机数
- 如何在没有浮点数/双精度数的情况下生成均匀和高斯分布的伪随机数
- 使用推力生成均匀分布的随机数
- 生成属于指数分布的随机数
- C++生成范围内服从正态分布的随机数
- 如何生成指数分布的随机数(带均值)
- 如何在 GCC 5 中为指数分布生成随机数
- 随机数生成器 - 直方图构造(泊松分布和计数变量)
- 随机数的正态分布会挂起程序
- C++11 随机数分布在各个平台上并不一致——有什么替代方案
- C++指数分布模板类生成不精确的随机数
- 指定的随机分布使用哪种类型的随机数引擎
- 如何在vs2010中生成均匀分布随机数
- 均匀分布随机数生成