这里还是和之前的一样,先在src文件夹下创建ANSI格式的.txt文件用于存储名单,我这里用到了接龙检测中用到过的班级名单,还有将男生和女生分别列了出来
class Random_People
{
#include<ctime>
string name[40];
ifstream op;
bool vis[40];
int num, oprt;
int num_people[4]{ 0,39,20,19 };
public:
void get_name()
{
srand(time(NULL));
puts("1.抽取所有人");
puts("2.仅抽取女生");
puts("3.仅抽取男生");
cin >> oprt;
switch (oprt)
{
case 1:
op.open("src/21法一名单.txt");
for (int i = 0; i < num_people[oprt]; i++)
op >> name[i];
break;
case 2:
op.open("src/21法一女生名单.txt");
for (int i = 0; i < num_people[oprt]; i++)
op >> name[i];
break;
case 3:
op.open("src/21法一男生名单.txt");
for (int i = 0; i < num_people[oprt]; i++)
op >> name[i];
break;
}
cout << "需要抽取的人数:";
cin >> num;
for (int i = 0; i < num;)
{
int j = rand() % num_people[oprt];
if (vis[j])continue;
cout << name[j] << endl;
vis[j] = 1, i++;
}
}
}Random_People;//随机抽人
PS:该代码也可用于随机抽取宿舍,将人换成宿舍号即可