c++如何生成一组不重复的随机数
时间: 2024-10-06 16:01:39 浏览: 94
在C++中,生成一组不重复的随机数可以采用几种方法,特别是在需要一定范围内的唯一整数时。这里我们可以结合`<random>`库和`<vector>`容器来实现:
```cpp
#include <iostream>
#include <random>
#include <vector>
int main() {
const int range = 10; // 随机数范围,例如0到9
std::vector<int> unique_random(range); // 容器用于存储不重复的随机数
// 使用Mersenne Twister算法生成器,它是一个高质量的伪随机数生成器
std::mt19937 generator(std::random_device{}()); // 根据系统时间初始化
std::uniform_int_distribution<> distribution(0, range - 1); // 统一分布,指定范围
// 生成并插入不重复的随机数
for (auto& num : unique_random) {
do {
num = distribution(generator);
} while (std::find(unique_random.begin(), unique_random.end(), num) != unique_random.end()); // 检查是否重复
}
// 打印结果
for (const auto& num : unique_random) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
在这个例子中,我们首先创建了一个固定大小的向量来保存随机数,并使用`std::mt19937`作为随机数生成器。然后,通过一个循环不断生成随机数并检查是否已存在于向量中,直到生成不重复的数字为止。
阅读全文