← 模式

掷骰子

12345678910#include <random> int main() { std::random_device random_device; std::mt19937 random_engine{random_device()}; std::uniform_int_distribution<int> die_distribution{1, 6}; int die_roll = die_distribution(random_engine); }

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

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

意图

根据均匀分布生成一个随机整数。

描述

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

第 7 行,我们创建了一个 std::uniform_int_distribution,它代表了从 1 到 6(包含 1 和 6)的整数均匀随机分布。也就是说,从 1 到 6 的每个值出现的概率相等。

最后,我们从随机数引擎中生成一个随机数,并按照均匀整数分布进行分布(第 9 行)。这样我们就得到了一个从 1 到 6 的随机整数,就像我们掷了一个 6 面的骰子一样。

要生成更多的随机数,只需再次调用 die_distribution(random_engine) 即可。

贡献者

  • Joseph Mansfield

最后更新

2017年12月9日

来源

在 GitHub 上 Fork 此模式

分享