如何在C++中生成不同数量的随机整数序列,例如生成10个、100个和1000个不重复的随机整数?
时间: 2024-11-12 19:43:52 浏览: 5
在C++中,你可以使用`<random>`库和容器如`std::vector`来生成指定数量的不重复的随机整数。以下是一个简单的示例:
```cpp
#include <iostream>
#include <random>
#include <algorithm>
#include <vector>
int main() {
// 设定随机数生成器的种子,这里为了简化示例,直接使用当前时间作为种子
std::mt19937 gen(std::chrono::system_clock::now().time_since_epoch().count());
std::uniform_int_distribution<> dis(1, 100); // 生成1到100之间的随机数
// 生成不同数量的随机整数
int num1 = 10;
std::vector<int> sequence1(num1);
for (int i = 0; i < num1; ++i) {
while (sequence1.count(dis(gen)) > 0) { // 检查是否已存在该随机数
dis(gen);
}
sequence1[i] = dis(gen);
}
int num2 = 100;
std::vector<int> sequence2(num2);
std::iota(sequence2.begin(), sequence2.end(), 1); // 先填充1到num2的连续整数,然后替换部分元素
std::shuffle(sequence2.begin(), sequence2.end(), gen); // 使用随机算法打乱顺序
int num3 = 1000;
std::vector<int> sequence3(num3);
std::generate_n(std::back_inserter(sequence3), num3, dis); // 直接一次性生成并插入
// 打印结果
for (const auto &num : {sequence1, sequence2, sequence3}) {
std::cout << "Sequence with " << num.size() << " unique random integers:\n";
for (auto num : num) {
std::cout << num << " ";
}
std::cout << "\n";
}
return 0;
}
```
阅读全文