← 模式

抛掷一枚有偏硬币

12345678910#include <random> int main() { std::random_device random_device; std::mt19937 random_engine{random_device()}; std::bernoulli_distribution coin_distribution{0.25}; bool outcome = coin_distribution(random_engine); }

此模式采用 CC0 公共领域贡献 许可。

需要 c++11 或更新版本。

意图

根据伯努利分布生成一个随机布尔值。

描述

第 5 行std::random_device 提供了一个均匀的非确定性随机数源(如果该源可用)。我们用它来为第 6 行的梅森旋转随机数引擎 std::mt19937 提供种子。若需不同特性,可考虑其他随机数引擎

第 7 行,我们创建了一个 std::bernoulli_distribution,它代表一个成功概率为 0.25 的伯努利分布。这可以被看作是一枚有偏差的硬币,它只有四分之一的时间会正面朝上。

最后,我们从随机数引擎中生成一个随机数,并根据伯努利分布进行分布(第 9 行)。这将得到一个布尔值,它有 0.25 的概率为 true,否则为 false

贡献者

  • Joseph Mansfield

最后更新

2017年12月9日

来源

在 GitHub 上 Fork 此模式

分享