← 模式
掷骰子
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)
即可。