个人网站创建与管理网站地图 百度

张小明 2026/1/7 7:33:33
个人网站创建与管理,网站地图 百度,wordpress分类目录和标签的作用,程序员wordpress主题抽奖机随机号码序列生成算法实现与比较 一、课题背景 本课题以“抽奖机随机号码生成”为应用场景#xff0c;实现并比较四种随机抽样算法#xff0c;包括#xff1a; 基础随机法 洗牌算法#xff08;Fisher–Yates#xff09; 加权随机法 批量随机法 目标是学习随机…抽奖机随机号码序列生成算法实现与比较一、课题背景本课题以“抽奖机随机号码生成”为应用场景实现并比较四种随机抽样算法包括基础随机法洗牌算法Fisher–Yates加权随机法批量随机法目标是学习随机算法原理、实现方式以及效率比较。二、课程设计目标1. 知识目标理解随机算法思想掌握 Fisher–Yates 洗牌算法能用 C 生成无重复随机序列了解加权随机抽取的概率控制方法2. 能力目标提升编程实现能力能分析不同算法的复杂度和适用性三、算法原理1. 基础随机法不断生成随机数若不重复则加入结果。缺点查重开销大效率低。2. 洗牌算法Fisher–Yates步骤构建完整号码池从后向前遍历与[0..i]随机位置交换取最后 k 个作为结果优点等概率、高效率。3. 加权随机法通过权重控制被选中的概率用于“某些号码更容易中”的场景。4. 批量随机法一次生成一批随机数统一去重提高效率。四、程序设计与实现C#include iostream #include vector #include unordered_set #include algorithm #include ctime #include numeric using namespace std; // 方法1基础随机法 vectorint randomDraw_basic(int min_num, int max_num, int k) { vectorint result; if (min_num max_num || k 0 || k (max_num - min_num 1)) { return result; } int total_num max_num - min_num 1; while (result.size() k) { int num rand() % total_num min_num; bool is_duplicate false; for (int v : result) { if (v num) { is_duplicate true; break; } } if (!is_duplicate) { result.push_back(num); } } return result; } // 方法2洗牌算法 vectorint randomDraw_shuffle(int min_num, int max_num, int k) { vectorint pool; for (int i min_num; i max_num; i) { pool.push_back(i); } int n pool.size(); if (k n) return pool; for (int i n - 1; i n - k; --i) { int rand_idx rand() % (i 1); swap(pool[i], pool[rand_idx]); } return vectorint(pool.end() - k, pool.end()); } // 方法3加权随机法 vectorint randomDraw_weighted(int min_num, int max_num, int k, const vectordouble weights) { vectorint result; unordered_setint used; double total_weight accumulate(weights.begin(), weights.end(), 0.0); while (result.size() k) { double r (rand() / (double)RAND_MAX) * total_weight; double cur 0.0; int selected -1; for (int i 0; i weights.size(); i) { cur weights[i]; if (cur r) { selected min_num i; break; } } if (selected ! -1 used.find(selected) used.end()) { used.insert(selected); result.push_back(selected); } } return result; } // 方法4批量随机法 vectorint randomDraw_batch(int min_num, int max_num, int k) { vectorint result; unordered_setint used; int total_num max_num - min_num 1; const int BATCH k * 2; while (result.size() k) { vectorint temp; for (int i 0; i BATCH; i) { temp.push_back(rand() % total_num min_num); } for (int num : temp) { if (used.find(num) used.end()) { used.insert(num); result.push_back(num); if (result.size() k) break; } } } return result; } void printResult(const vectorint nums, const string name) { cout 【 name 】:; for (int v : nums) cout v; cout endl; } int main() { srand((unsigned)time(nullptr)); const int MIN 1, MAX 50, K 6; vectordouble weights(MAX - MIN 1, 1.0); for (int i 0; i weights.size(); i) { if (MIN i 20 MIN i 30) { weights[i] 3.0; } } printResult(randomDraw_basic(MIN, MAX, K), 基础随机法); printResult(randomDraw_shuffle(MIN, MAX, K), 洗牌算法); printResult(randomDraw_weighted(MIN, MAX, K, weights), 加权随机法); printResult(randomDraw_batch(MIN, MAX, K), 批量随机法); return 0; }五、运行结果示例【基础随机法】: 5 13 27 40 48 2 【洗牌算法】: 10 21 6 34 8 49 【加权随机法】: 22 27 25 6 30 41 【批量随机法】: 7 16 29 11 3 44六、结果分析基础随机法实现简单但效率最低。洗牌算法随机性最强效率最高工程最常用。加权随机法可人为控制概率结果偏向权重高的区间。批量随机法性能介于基础法和洗牌法之间。七、课程设计总结通过本次课程设计我掌握了随机算法的实现方式并理解了随机数生成不仅是调用 rand()还需关注均匀性和去重方式Fisher–Yates 是真正保证等概率的算法加权抽取可灵活实现概率控制批量生成可显著提高效率本次课设提高了我的算法能力、工程实现能力以及团队合作能力。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

台州网站快速优化排名wordpress iis

前言最近在接手一个同事写的WPF项目,是使用.NetFramwork 开发的,使用的进程间通信没有使用我们之前封装的基于WebSocket的封装组件的,而是使用Win32的方式:发送端用的Windows Api:SendMessage ,接受端使用的…

张小明 2025/12/26 8:41:49 网站建设

高端网站设计图片厦门网站建设培训费用

5个理由选择Graphic:Flutter数据可视化的最佳解决方案 【免费下载链接】graphic A grammar of data visualization and Flutter charting library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphic 如果你正在寻找一个功能强大、易于使用的Flutter图表…

张小明 2026/1/2 6:13:29 网站建设

免费做的网站怎么设置域名解析企业管理平台系统网站

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 这篇文章主要介绍了Selenium(Python web测试工具)基本用法,结合实例形式分析了Selenium的基本安装、简单使用方法及相关操作技巧,需要的朋友…

张小明 2025/12/26 8:37:46 网站建设

织梦保险网站源码wordpress 国际支付宝

ReactQuill 编辑器全屏模式:释放创作空间的终极指南 【免费下载链接】react-quill A Quill component for React. 项目地址: https://gitcode.com/gh_mirrors/re/react-quill 在内容创作的世界里,你是否曾经因为编辑区域太小而感到束手束脚&#…

张小明 2025/12/26 8:35:44 网站建设

怎么写网站建设维护推广合同好用的软件下载网站

“2026年第二届人工智能与产品设计国际学术会议(AIPD 2026)”是一个致力于探索和展示人工智能如何彻底改变产品设计的各个环节,促进创新与效率的提升的重要学术会议。会议旨在汇聚全球产品设计界、信息技术专家、学者和开发者,讨论…

张小明 2025/12/26 8:33:41 网站建设

定远规划建设局网站有啥创意可以做商务网站的

又到了论文开题季,很多同学发现,自己用AI辅助写完的论文,AIGC率高得吓人。明明只是润色,检测却显示“高风险AI生成”。面对这个论文降ai的难题,盲目手改往往收效甚微。 别慌。市面上已经有很多工具可以辅助降低ai率。今…

张小明 2025/12/26 8:31:40 网站建设