如何生成不重复随机数不用<random>库
时间: 2024-11-03 13:19:16 浏览: 16
如果你不想使用C++ `<random>`库来生成不重复的随机数,可以使用数组和排序的方式来实现。下面是一个简单的例子,假设你想生成一个长度为n,范围在1到m之间的无重复随机数列表:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
int main() {
srand(time(0)); // 设置初始随机种子
int n = 10; // 需要生成的随机数数量
int m = 50; // 数字的范围
std::vector<int> numbers(m + 1); // 创建一个包含范围元素的向量
// 将范围内的数字填入向量
for (int i = 1; i <= m; ++i) {
numbers[i] = i;
}
// 现在随机选择n个不重复的数字
std::random_shuffle(numbers.begin(), numbers.end()); // 打乱数组顺序
numbers.resize(n);
// 输出结果
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个程序中,首先填充一个数组,然后使用`std::random_shuffle()`函数打乱整个数组,最后取前n个元素作为随机数列表。因为数组已经被排序过,所以取出的就是不重复的。
阅读全文