c++在循环中定义一组概率分布

c++ Define a set of probability distributions in loop

本文关键字:一组 概率分布 循环 定义 c++      更新时间:2023-10-16

我想创建一组具有不同均值的正态分布。像这样:

#include <random>
using namespace std;
std::default_random_engine generator;
std::normal_distribution<double> normal_1(0.0,std_1);
std::normal_distribution<double> normal_2(0.0,std_2);
// and so on until:
std::normal_distribution<double> normal_N(0.0,std_N);

我需要能够改变分发的总数,这样循环会更好地工作,就像这样:

for (int i = 1; i<=N; i++){
std::normal_distribution<double> normal_i(0.0,std_i);
}

PD:我刚接触C++,所以这可能是一个非常基本的问题。

正如fretash在评论中指出的那样,std::vector完成了这项工作。

#include <random>
#include <iostream>
#include <vector>
using namespace std;
default_random_engine generator;

int main()
{
vector<normal_distribution<double>> v = {};
for (int i=1; i<=N; i++)
{
v.push_back(normal_distribution<double> (0.0,std_i));
}
//v[i-1](generator); generate a random number from the distribution i
}