HarmonyOS应用开发实战:猫猫大作战-随机等级生成算法

发布时间:2026/7/29 18:54:51
HarmonyOS应用开发实战:猫猫大作战-随机等级生成算法 前言在「猫猫大作战」中新投放的猫咪需要随机生成等级但不能全是低级猫也不能全是高级猫。我们使用加权随机算法控制各等级的出现概率。一、加权随机privaterandomLevel():CatLevel{constrandMath.random();if(rand0.5)returnCatLevel.SMALL;// 50%if(rand0.8)returnCatLevel.MEDIUM;// 30%if(rand0.95)returnCatLevel.LARGE;// 15%returnCatLevel.XLARGE;// 5%}二、概率分布等级概率区间难度SMALL (1)50%[0, 0.5)简单MEDIUM (2)30%[0.5, 0.8)普通LARGE (3)15%[0.8, 0.95)困难XLARGE (4)5%[0.95, 1.0)稀有三、随机列选择privaterandomCol():number{returnMath.floor(Math.random()*GameConfig.BOARD_WIDTH);}// 带权重的列选择中间列概率更高privaterandomColWeighted():number{constweights[0.15,0.2,0.3,0.2,0.15];constrandMath.random();letsum0;for(leti0;iweights.length;i){sumweights[i];if(randsum)returni;}return2;// 默认中间列}四、防重复策略// 连续三次不出高级猫时保证一次中高级privateforcedLevel:CatLevel|nullnull;privategetNextLevel():CatLevel{if(this.forcedLevel){constlevelthis.forcedLevel;this.forcedLevelnull;returnlevel;}returnthis.randomLevel();}privatecheckForce():void{if(this.consecutiveLow3){this.forcedLevelCatLevel.MEDIUM;this.consecutiveLow0;}}五、最佳实践Math.random()生成 [0,1) 均匀分布if-else 链实现加权采样保底机制连续不出高级猫时强制提升列权重中间列概率略高增加策略性总结加权随机算法通过Math.random()配合条件判断控制各等级的生成概率保底机制保证游戏体验。核心要点Math.random()均匀分布、 条件判断加权采样、 保底机制防极端。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Math.random() MDN 文档第 119 篇private第 121 篇gravity第 122 篇collision