如何在c++中修改std::poisson_distribution的均值
How to modify mean of std::poisson_distribution in C++
如何在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});