【发布时间】:2023-03-07 23:20:01
【问题描述】:
我需要一系列具有不同均值和方差的正态分布随机数,我知道如何创建一个具有特定均值和方差的序列,但我可以拥有一个生成器数组吗?
喜欢我们有的 1 个系列
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
normal_distribution<double> d(0.0, 1.0);
for (int i = 0; i < 5000; i++)
cout << " " << d(gen) << "\n";
return 0;
}
这给了我一系列正态分布的随机数,我知道我可以为另一个系列创建另一个具有另一个均值和方差的 d,但是有什么方法可以将很多这样的 normal_distribution d 放在一个数组中,这样我可以通过简单地选择数组中的一个元素来选择一个特定的生成器。
我试过一个版本
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
normal_distribution<double> d(0.0, 1.0),d2(0.0,1.0);
normal_distribution<double> D[]={d,d2};
for (int i = 0; i < 5000; i++)
cout << " " << D[0](gen) << "\n";
system("pause");
return 0;
}
但我想直接用像 D0 这样的数组来初始化它,这样我就可以把它放在一个循环中
【问题讨论】:
-
您知道如何初始化对象(就像您使用
d和d2一样)并且您知道如何初始化数组。如果我理解正确的话,你想结合这两个初始化,所以你直接初始化数组中的对象,而不是使用两个临时变量d和d2?那你为什么不干脆做呢?放例如normal_distribution<double>(0.0, 1.0)作为数组初始化器? -
是的,我刚刚想通了。谢谢
-
@mathguy 如果你想通了,请为你的问题添加答案。
标签: c++ arrays random normal-distribution