如何在c++中修改std::poisson_distribution的均值

How to modify mean of std::poisson_distribution in C++

本文关键字:poisson distribution std c++ 修改      更新时间:2023-10-16

如何在c++中修改std::poisson_distribution的平均值?

存在全局变量std::poisson_distribution<int> distribution(mean);。它的平均值应该从输入(在函数内)定义,而在另一个函数中使用。我是否可以在声明和初始化它之后修改它的平均值?或者我可以将其声明为全局变量并在函数内初始化它(通过"调用"其构造函数)?

我知道我可以将均值参数传递给调用泊松生成器的函数。然而,由于调用泊松生成器的函数在一个循环中,这可能导致多次创建生成器,或者可能使程序结构非常复杂。

std::poisson_distribution<int> distribution(mean);
std::default_random_engine rand_generator;
int flag = 1;
void main()
{
  if (flag==1)
  {
    double poisson_mean;
    cin >> poisson_mean;
    // can I initialize poisson here using poisson_mean?
  }
  else
  {  }  // that is poisson is never used
  for (int i=0; i<10; i++)
    func_do_sth();  // Poisson might be used in this function.
}

使用assign:

distribution = std::poisson_distribution<int>(poisson_mean);

param():

using param_t = std::poisson_distribution<int>::param_type;
distribution.param(param_t{poisson_mean});