在c ++中使用泊松分布生成二进制值

时间:2014-12-12 15:33:22

标签: c++ distribution poisson probability-theory

我从cpluscplus dot com获得的代码是:

unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine generator (seed);

std::poisson_distribution<int> distribution (0.5);

std::cout << "some Poisson-distributed results (mean=0.5): ";
for (int i=0; i<10; ++i)
  std::cout << distribution(generator) << " ";

std::cout << std::endl;

平均值为5.2,我将其更改为0.5以生成0或1.但有时会产生2或3。我怎么能限制它?

编辑: 我读了你说的话。我需要泊松,我需要它作为二进制。原因如下:我正在研究“认知无线电网络中的频谱感知”这一主题。在我读到的所有论文中,作者都​​说“我使用泊松分布来测试我的研究”。对于不了解该主题的人: 环境中有一个主要用户(许可用户)。它使用频道时间。并且还有次要用户(未经许可的用户)并且他们尝试预测主要时间段,以便他们可以在主要用户关闭时跳转到频道。所以,要做到这一点:

primaryUserTimeslotTable={1,1,1,0} //should be generated with poisson dist. (papers say)

以相同的方式(具有相同的意思)我们为每个认知用户创建这个数组。

1 个答案:

答案 0 :(得分:1)

Lambda是Poisson分布的均值,因此0.5是lambda。

限制&#39;它是没有意义的。泊松分布,因为均值只是预期值。您可以获得更多或更少的成功。

也许您正在寻找伯努利分布?

编辑:

我在认知无线电网络中进行了快速谷歌频谱感知&#34;看起来你好像是Poisson point process之后。如果你有一个强度为λ的泊松点过程,则事件的发生速率应使任何单位时间间隔内预期的事件数为λ。