实现九宫格概率抽奖(与往常不同的方法哦)

简介: 实现九宫格概率抽奖(与往常不同的方法哦)

使用到了do-while的方法

function lottery() {  
  // 九宫格中奖概率  
  const probabilities = [10, 20, 30, 40, 50, 40, 30, 20, 10];  
  // 总概率值  
  const totalProbability = probabilities.reduce((sum, probability) => sum + probability, 0);  
  // 当前剩余概率值  
  let currentProbability = totalProbability;  
  // 中奖的格子索引  
  let winnerIndex = -1;  
  do {  
    // 在九宫格中随机选择一个格子  
    winnerIndex = Math.floor(Math.random() * probabilities.length);  
    // 检查当前概率是否大于 0  
    if (probabilities[winnerIndex] > 0) {  
      // 中奖,更新剩余概率值和选中格子的概率值  
      currentProbability -= probabilities[winnerIndex];  
      probabilities[winnerIndex] = 0;  
      // 检查是否有其他格子的概率大于 0,如果有则继续循环,否则结束循环  
      if (probabilities.some(probability => probability > 0)) {  
        continue;  
      } else {  
        break;  
      }  
    }  
  } while (currentProbability > 0);  
  // 返回中奖的格子索引  
  return winnerIndex;  
}

使用方法:调用 lottery() 函数即可获得中奖的格子索引。如果返回值为 -1,表示没有中奖。

相关文章
|
索引
Layui 内置方法 - layer.prompt_(输入层)
Layui 内置方法 - layer.prompt_(输入层)
1327 0
|
10月前
|
自然语言处理 测试技术 决策智能
让RAG更聪明,ViDoRAG开启视觉文档检索增强生成新范式,上阿里云百炼可直接体验
视觉丰富文档的高效检索与生成是自然语言处理领域的重大挑战。ViDoRAG(Visual Document Retrieval-Augmented Generation via Dynamic Iterative Reasoning Agents)由阿里巴巴通义实验室、中国科学技术大学和上海交通大学联合提出,通过多智能体框架和动态迭代推理机制解决此问题。其核心包括多模态混合检索策略和多智能体生成流程,同时发布的ViDoSeek数据集,专为大规模文档集合设计,提供复杂推理与精准问答的评估基准。实验表明,ViDoRAG在准确率和效率上优于传统方法,未来将优化系统性能并降低计算成本。
991 63
|
11月前
|
存储 数据可视化 搜索推荐
「从0到1搭建知识库:设计团队的效率革命」
在快节奏的设计行业中,团队协作的效率和质量至关重要。本文探讨了如何通过搭建高效的设计团队知识库解决信息分散、规范不统一等问题,提升团队协同效率。内容涵盖知识库的核心价值、常见痛点、搭建方法、运营策略及未来趋势,帮助团队实现从混乱到高效的转变。知识库不仅能统一设计规范、沉淀最佳实践,还能提高新人上手速度。文章还介绍了内容框架设计、流程化管理、工具赋能等黄金方法论,并展望了智能化与场景化的未来趋势。
766 10
|
9月前
|
Linux PHP iOS开发
PHP-Raylib 视 频 游 戏 编 程 库
php-raylib 是基于 PHP-FFI 绑定的 raylib-v5.5 游戏开发库,让 PHP 开发者轻松实现视频游戏编程。相比仅支持 4.+ 版本的原库,本项目适配最新 5.5 版本,并提供友好文档与示例代码(如窗口初始化、文本绘制等)。支持 PHP 7.4+ 和多平台(Windows、Linux、macOS),可通过 Composer 快速安装。欢迎贡献和完善![查看文档](http://raylib.kllxs.top/) 或访问仓库(GitHub/Gitee/Gitcode)。
PHP-Raylib 视 频 游 戏 编 程 库
|
C# 图形学
【unity小技巧】Unity音乐和音效管理器
【unity小技巧】Unity音乐和音效管理器
1232 1
|
JavaScript API
Vue2 中使用Swiper构建中间大两边小轮播效果
【10月更文挑战第8天】
1888 122
|
小程序 定位技术
【微信小程序-原生开发+TDesign】地图导航(wx.openLocation的使用)
【微信小程序-原生开发+TDesign】地图导航(wx.openLocation的使用)
495 0
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
JavaScript 前端开发
js中通过正则表达式验证邮箱是否合法
这篇文章提供了一个JavaScript示例,通过正则表达式在网页上验证用户输入的邮箱地址是否合法,并给出了相应的提示信息。
js中通过正则表达式验证邮箱是否合法
|
JavaScript
成功解决:Failed to resolve directive: mode
这篇文章介绍了如何解决Vue中遇到的"Failed to resolve directive: mode"错误的两个常见原因及其解决办法:确保指令的单词拼写正确,以及在创建Vue实例之前注册全局指令。
成功解决:Failed to resolve directive: mode