使用C ++和boost生成泊松到达日期

时间:2012-10-26 20:17:29

标签: c++ boost poisson

我正在做传输网络的模拟程序。我想模拟一个公共汽车站的乘客到达,这个公共汽车站的毒物分布率为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的到达日期以及相同的列表大小,它将始终生成相同的数字。

如何在这一代中创建某个变体,以便两个生成的列表有点不同?

1 个答案:

答案 0 :(得分:0)

每当您使用随机生成器时,请使用当前时间重新设置它。这将在大多数时间产生不同的序列。你发现了:

rnd_gen(static_cast<unsigned int>(std::time(0)));