送书开奖:
这里是书单:
《C++ Primer 中文版(第5版)》
《C++ Primer习题集(第5版)》
《Essential C++中文版》
《C++标准库(第2版)》
《深度探索C++对象模型》
《剑指Offer:名企面试官精讲典型编程题(第2版)》
《剑指Offer(专项突破版):数据结构与算法名企面试题精讲》
《Effective C++:改善程序与设计的55个具体做法(第3版 中文版)》
《More Effective C++:35个改善编程与设计的有效方法(中文版)》
《C++之美:代码整洁、安全又跑得快的30个要诀》
《C++之旅(第3版)》
《程序员的自我修养—链接、装载与库》
《编码》
这次参与人数比较多,按照留言时间顺序,从留言的前50个人里面抽取5个人:(第10个留言的编号10)
腾讯元宝平台输入:
现在有个抽奖需求,总共有50个人参加,利用C++写一个抽奖程序,要求每个人中奖概率相同,总共5个人中奖。
给出代码
// 设置随机种子
void setRandomSeed() {
srand(static_cast<unsigned int>(time(nullptr)));
}
// 生成一个指定范围内的随机整数
int getRandomNumber(int min, int max) {
return min + rand() % (max - min + 1);
}
// 从参与者中随机抽取中奖者
std::vector<int> drawWinners(const std::string participants[], int numParticipants, int numWinners) {
assert(numWinners <= numParticipants); // 确保中奖人数不超过参与者总数
std::vector<int> indices(numParticipants);
// 初始化索引向量
for (int i = 0; i < numParticipants; ++i) {
indices[i] = i;
}
// 随机打乱索引
for (int i = numParticipants - 1; i >= numWinners; --i) {
int j = getRandomNumber(0, i);
std::swap(indices[i], indices[j]);
}
// 提取前numWinners个索引
std::vector<int> winners(indices.begin(), indices.begin() + numWinners);
return winners;
}
int main() {
// 初始化随机种子
setRandomSeed();
// 参与者的列表
const int numParticipants = 50;
const int numWinners = 5;
std::string participants[numParticipants];
// 填充参与者名单
for (int i = 0; i < numParticipants; ++i) {
participants[i] = "Participant_" + std::to_string(i + 1);
}
// 抽奖
std::vector<int> winnersIndices = drawWinners(participants, numParticipants, numWinners);
// 输出结果
std::cout << "Winners are:" << std::endl;
for (int index : winnersIndices) {
std::cout << " " << participants[index] << std::endl;
}
getchar();
return 0;
}
运行输出:
编号23我看了下没有关注公众号,所以再单独重新抽一个人
const int numWinners = 1;//5; 这里5改为1
运行:
中奖编号出炉
4、16、22、28、41
编号4读者:Orio
编号16读者:rocky
编号22读者:@chen
编号28读者:天赐细莲
编号41读者:TUT
以上5位读者联系我,微信:fb964919126 发地址和想要的书籍给我!
预告:下周会继续送书,AI方面的书籍。欢迎积极参与!!!
end
CppPlayer
关注,回复【电子书】珍藏CPP电子书资料赠送
精彩文章合集
专题推荐