使用int MyRandom(int n, int m) { static int initialized = 0; if (!initialized) { srand(time(NULL)); // 使用当前时间作为种子,初始化随机数发生器 initialized = 1; } int range = m - n + 1; return n + rand() % range; }函数完成:制作一“x选y ”通用福利彩券摇奖器,即:每次运行,随机产生y个1~x的不重复的整数。
时间: 2024-03-25 15:37:15 浏览: 114
java中如何使用Static的变量和方法.doc
好的,这个问题其实需要分几步来实现。以下是一个简单的实现:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int MyRandom(int n, int m) {
static int initialized = 0;
if (!initialized) {
srand(time(NULL)); // 使用当前时间作为种子,初始化随机数发生器
initialized = 1;
}
int range = m - n + 1;
return n + rand() % range;
}
int main() {
int x, y;
cout << "请输入x和y(以空格分隔):";
cin >> x >> y;
int* nums = new int[y]; // 动态分配数组
for (int i = 0; i < y; i++) {
nums[i] = -1; // 初始化为-1
}
for (int i = 0; i < y; i++) {
int num;
do {
num = MyRandom(1, x); // 生成不重复的随机数
} while (find(nums, nums + y, num) != nums + y); // 判断是否已经存在
nums[i] = num; // 存入数组中
}
cout << "随机数为:";
for (int i = 0; i < y; i++) {
cout << nums[i] << " ";
}
cout << endl;
delete[] nums; // 释放内存
return 0;
}
```
这个程序中,我们使用了动态分配数组并且在程序结束时释放了内存。同时,我们使用了STL的`find`函数来判断生成的随机数是否与之前已经存在的随机数重复。这个程序可以生成任意数量、任意范围的随机数,你可以根据需要进行修改。
阅读全文