← 模式

选择一个随机元素

12345678910111213#include <random> #include <vector> int main() { std::vector<int> v = {10, 15, 20, 25, 30}; std::random_device random_device; std::mt19937 engine{random_device()}; std::uniform_int_distribution<int> dist(0, v.size() - 1); int random_element = v[dist(engine)]; }

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

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

意图

从容器中选择一个随机元素。

描述

第 6 行,我们创建了一个 std::vector,我们将从中选择一个随机元素。

然后我们实际上是掷骰子,骰子上的数字是容器中元素的索引。也就是说,我们在第 8-9 行std::mt19937 提供种子,并在第 10 行创建了一个从 0v.size() - 1(包含边界)的整数均匀随机分布。这个分布将以相等的概率给出该范围内的任何整数。

第 12 行,我们调用 dist(engine) 来生成随机索引,并使用这个值来访问 v 中的一个元素。

贡献者

  • Joseph Mansfield

最后更新

2018年8月27日

来源

在 GitHub 上 Fork 此模式

分享