已知 int rand_num=rand();产生一个0到rand_max的随机整数,假设有n个人等待面试,编号0,1,2,……n-1,编程实现这n个人按随机顺序出列,打印输出结果,例如n=10时,随机顺序为4 7 8 5 3 9 6 0 2 1,随机函数要使用给的rand()
时间: 2023-06-03 20:06:52 浏览: 86
函数,打印输出结果应为:4 7 8 5 3 9 6 0 2 1。
可以使用一个数组来存储编号,然后使用随机函数生成一个随机数,将该随机数对 n 取余,得到一个在 0 到 n-1 之间的随机整数,将该随机整数对应的编号输出,并从数组中移除该编号。重复该过程直至数组为空,即所有人都已按随机顺序出列。
下面是代码实现:
```
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int rand_max = RAND_MAX; // rand_max 取自 rand() 函数的最大返回值
int main()
{
srand(time(0)); // 随机数种子
int n;
cout << "请输入人数 n:";
cin >> n;
int* queue = new int[n]; // 存储编号的数组
for (int i = 0; i < n; i++)
queue[i] = i;
for (int i = n; i > 0; i--)
{
int j = rand() % i; // 生成随机整数
cout << queue[j] << " "; // 输出该随机整数对应的编号
queue[j] = queue[i-1]; // 将该编号从数组中移除
}
delete [] queue; // 释放内存
return 0;
}
```
该程序会按照随机顺序打印出编号,并在数组中移除该编号,最终输出所有人按随机顺序出列的结果。
阅读全文