用C++编写随机算法根据身份证号抽取三万人当中10个幸运观众
时间: 2023-09-09 17:13:39 浏览: 96
以下是用C++编写的根据身份证号抽取10个幸运观众的随机算法:
``` c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
const int N = 30000;
const int M = 10;
int id[N];
int lucky[M];
srand(time(NULL)); // 设置随机种子
// 初始化身份证号数组
for (int i = 0; i < N; i++) {
id[i] = i + 1;
}
// 随机抽取幸运观众
for (int i = 0; i < M; i++) {
int r = rand() % (N - i); // 生成随机数,范围在 [0, N-i) 之间
lucky[i] = id[r]; // 将身份证号存入幸运观众数组中
id[r] = id[N - i - 1]; // 将身份证号数组中的最后一个元素复制到随机位置
}
// 输出幸运观众的身份证号
for (int i = 0; i < M; i++) {
cout << lucky[i] << " ";
}
cout << endl;
return 0;
}
```
在上述代码中,我们首先定义了一个常量N表示参与抽奖的人数,另一个常量M表示需要抽取的幸运观众的数量。然后,我们使用一个数组id来存储所有参与抽奖的人的身份证号。接下来,我们使用srand函数设置随机种子,然后使用rand函数生成随机数,随机抽取幸运观众,并将其身份证号存入lucky数组中。最后,我们输出lucky数组中的身份证号即可。
阅读全文