std :: discrete_distribution()是否允许零权重?

时间:2019-05-28 10:40:39

标签: c++ random

std::discrete_distribution是否可以在零权重的情况下使用,假设给定了至少一个正权重?权重为零的物品绝对不应抽样。

它似乎可以在我的机器上运行的事实并不能使我确信它可以在所有系统上运行。

示例:

std::discrete_distribution<> dd({1.0, 2.0, 0.0, 3.0});

1 个答案:

答案 0 :(得分:1)

[rand.dist.samp.discrete]/2

  

除非另有说明,否则分布参数的计算方式为:pk = wk / S的{​​{1}},其中wk值(通常称为权重)应为非负,非NaN和非-无穷。此外,以下关系应成立:k = 0, ..., n−1

因此允许零权重,但是并非所有权重都可以为零,因为0 < S = w0 + ... + wn−1必须大于零。