【问题标题】:How to modify mean of std::poisson_distribution in C++如何在 C++ 中修改 std::poisson_distribution 的平均值
【发布时间】:2015-12-03 13:11:25
【问题描述】:

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

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

我知道我可以将 mean 参数传递给实际调用 Poisson 生成器的函数。但是,由于调用 Poisson 生成器的函数都在一个循环中,这可能会导致多次创建生成器,或者可能使程序结构非常复杂。

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.
}

【问题讨论】:

    标签: c++ c++11 constructor stl scope


    【解决方案1】:

    任意使用赋值:

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

    param():

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

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2018-05-15
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      相关资源
      最近更新 更多