在C++中,生成没有重复的随机数并填充数组可以通过以下步骤实现:
<cstdlib>
库中的rand()
函数生成随机数。以下是一个完整的C++示例,展示如何生成没有重复的随机数并填充数组:
#include <iostream>
#include <vector>
#include <cstdlib> // for rand() and srand()
#include <ctime> // for time()
void shuffleArray(std::vector<int>& array) {
for (int i = array.size() - 1; i > 0; --i) {
int j = rand() % (i + 1);
std::swap(array[i], array[j]);
}
}
std::vector<int> generateUniqueRandomNumbers(int size, int min, int max) {
if (size > (max - min + 1)) {
throw std::invalid_argument("Cannot generate more unique numbers than the range allows.");
}
std::vector<int> numbers;
for (int i = min; i <= max; ++i) {
numbers.push_back(i);
}
srand(time(0)); // Seed the random number generator
shuffleArray(numbers);
std::vector<int> result(numbers.begin(), numbers.begin() + size);
return result;
}
int main() {
int arraySize = 10;
int minValue = 1;
int maxValue = 100;
try {
std::vector<int> randomNumbers = generateUniqueRandomNumbers(arraySize, minValue, maxValue);
std::cout << "Generated unique random numbers: ";
for (int num : randomNumbers) {
std::cout << num << " ";
}
std::cout << std::endl;
} catch (const std::invalid_argument& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
size
不超过max - min + 1
,否则无法生成足够的不重复数字。srand(time(0))
确保每次运行程序时随机数序列不同。通过这种方法,你可以高效且可靠地生成没有重复的随机数数组,适用于多种编程需求。
领取专属 10元无门槛券
手把手带您无忧上云