【问题标题】:generating binary values using poisson distrubution in c++在 C++ 中使用泊松分布生成二进制值
【发布时间】:2014-12-12 15:33:22
【问题描述】:

我从 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)

我们以相同的方式(具有相同的平均值)为每个认知用户创建此数组。

【问题讨论】:

  • 您真的想要泊松分布吗?我认为泊松分布中较大的值永远不会达到 0 的概率(它只会变得无限小)。
  • 纯粹根据定义,如果您期望只有 2 个值(0 或 1),分布将不是泊松而是伯努利
  • @JosephMansfield 我编辑了它。
  • @Kyborek 我编辑了它。
  • 纯粹从你所说的来看,这篇论文似乎没有多大意义。也许他们限制了任何大于 1 的值?还是丢弃它们?仍然是一件很奇怪的事情,因为你最终会得到一个以奇怪的方式实现的伯努利分布。

标签: c++ distribution poisson probability-theory


【解决方案1】:

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

“限制”泊松分布是没有意义的,因为平均值只是期望值。您可以取得更多或更少的成功。

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

编辑:

我在“认知无线电网络中的频谱感知”上进行了一次快速的谷歌搜索,看起来您正在寻找Poisson point process。如果您有一个强度为 lambda 的泊松点过程,那么事件的发生率使得任何单位时间间隔上的预期事件数为 lambda。

【讨论】:

  • @WhoCares 您的编辑没有任何区别 - 如果您正在寻找具有固定概率和独立结果的二元结果,您正在指定伯努利随机变量的定义。如果论文说使用 Poisson 生成,那么作者不知道他们在说什么,因为对 Poisson 的支持是正整数的集合,而不仅仅是 {0,1}。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2016-10-24
  • 2015-07-21
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多