← 模式
抛掷一枚有偏硬币
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
。