我正在做传输网络的模拟程序。我想模拟一个公共汽车站的乘客到达,这个公共汽车站的毒物分布率为lambda。
事实上,在我对该计划的构想中,我需要两个到达日期列表:第一个被认为是乘客的预计到达日期,第二个将被视为乘客真正有效的到达日期。
为了生成时间到达,我确实使用了以下代码:
<blink>
double lambda(Lambda1); //mean of Poisson distr
boost::mt19937 rnd_gen; //Mersenne Twister generator
typedef boost::variate_generator<
boost::mt19937, boost::poisson_distribution<>
> rnd_poisson_t;
rnd_poisson_t rnd_poisson( rnd_gen,
boost::poisson_distribution<>( lambda ) );
rnd_poisson = rnd_poisson_t( rnd_gen,
boost::poisson_distribution<>( lambda ));
for(int i = 0; i <size;i++)
{
value=rnd_poisson();
tab[i]= rnd_poisson();
i++;
}
</blink>
问题是,如果我将此代码用于不同的列表来生成相同Lambda的到达日期以及相同的列表大小,它将始终生成相同的数字。
如何在这一代中创建某个变体,以便两个生成的列表有点不同?
答案 0 :(得分:0)
每当您使用随机生成器时,请使用当前时间重新设置它。这将在大多数时间产生不同的序列。你发现了:
rnd_gen(static_cast<unsigned int>(std::time(0)));