河北远策网站建设合肥制作网站的公司简介

张小明 2026/3/2 19:55:01
河北远策网站建设,合肥制作网站的公司简介,平谷做网站,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进行投诉反馈,一经查实,立即删除!

网站底部悬浮广告代码哪些网站做的比较好看的图片

Seed-Coder-8B-Base:多语言智能编码的轻量级基石 在现代软件开发日益复杂的背景下,一个熟悉的场景反复上演:开发者面对庞大的代码库和繁杂的API文档,迟迟无法下手;新人加入项目后,光是搞懂内部SDK的调用方式…

张小明 2026/1/21 21:01:15 网站建设

广东省建设教育协会是什么网站目前推广平台都有哪些

第一章:从任务分配到动态协同:Open-AutoGLM调度机制全链路拆解Open-AutoGLM 作为新一代面向大语言模型的自动化调度框架,其核心在于实现从静态任务分发到动态资源协同的无缝演进。该机制通过感知任务复杂度、模型负载状态与底层算力拓扑&…

张小明 2026/1/21 21:00:44 网站建设

厦门建站系统建设c#网站开发需要的技术

第一章:Open-AutoGLM 手机 AI 助手进化路径 Open-AutoGLM 是一个面向移动端的开源 AI 助手框架,致力于在资源受限的设备上实现高效、智能的自然语言交互。其核心设计理念是将大语言模型的能力与轻量化推理引擎结合,使智能手机用户无需依赖云端…

张小明 2026/1/21 21:00:13 网站建设

好网站制作租房

LightGBM算法入门教程:从原理到实践 0. 前置说明:为什么要学LightGBM? 在机器学习中,梯度提升决策树(GBDT) 是经典的集成学习算法,广泛用于分类、回归等任务。但GBDT在处理大规模数据或高维特征…

张小明 2026/1/21 20:58:41 网站建设

株洲能建网站的有哪些农业门户网站开发

2025年安徽省职业院校技能大赛(高职组)区块链技术应用赛项样题任务书 文章目录2025年安徽省职业院校技能大赛(高职组)区块链技术应用赛项样题任务书一、模块一:区块链产品方案设计及系统运维(35 分&#xf…

张小明 2026/1/21 20:57:39 网站建设

有哪些企业网站做的不错免费网站虚拟主机

一、🪄✨ 欢迎来到:C 位运算灯泡王国! ✨🪄在计算机世界里,每个数字都不是直接写成“10”、“25”这样的,而是变成一排亮着或灭着的小灯泡。 这些灯泡就是 比特位(bit)!灯…

张小明 2026/1/21 20:57:08 网站建设