js实现1,2,3,5数字按照概率生成


Posted in Javascript onSeptember 12, 2017

js按照配置的概率生成,概率规则如下:
1------------50%

2------------30%

3------------15%

5------------5%

简单的代码

function myRandom() {
 var rand = Math.random();
 if (rand < .5) return 1;
 if (rand < .8) return 2;
 if (rand < .95) return 3;
 return 5;
}

复杂点的

function prizeRand(oArr) {
 var sum = 0; // 总和
 var rand = 0; // 每次循环产生的随机数
 var result = 0; // 返回的对象的key

 console.log(oArr);

 // 计算总和
 for (var i in oArr) {
  sum += oArr[i][0];
 }

 // 思路就是如果设置的数落在随机数内,则返回,否则减去本次的数
 for (var i in oArr) {
  rand = Math.floor(Math.random()*sum + 1);
  if (oArr[i][0] >= rand) {
   result = oArr[i][0];
   break;
  } else {
   sum -= oArr[i][0];
  }
 }

 return result;

}

var oArr = {'5':[5, 'Mac'], '3':[15, 'iPhone'], '2':[30, 'iPad'], '1':[50, 'iWatch']};

console.log(prizeRand(oArr));

大家可以根据需要选择,建议查看三水点靠木的上一篇文章。

Javascript 相关文章推荐
一个原生的用户等级的进度条
Jul 03 Javascript
浅谈js中变量初始化
Feb 03 Javascript
js实现网站最上边可关闭的浮动广告条代码
Sep 04 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
Jul 28 Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
使用JavaScript实现点击循环切换图片效果
Sep 03 Javascript
判断滚动条滑到底部触发事件(实例讲解)
Nov 15 Javascript
使用proxy实现一个更优雅的vue【推荐】
Jun 19 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
Nov 11 Javascript
浅谈Vue SSR中的Bundle的具有使用
Nov 21 Javascript
vue 解决IOS10低版本白屏的问题
Nov 17 Javascript
js数组实现权重概率分配
Sep 12 #Javascript
js 概率计算(简单版)
Sep 12 #Javascript
JavaScript面向对象精要(下部)
Sep 12 #Javascript
在Vue.js中使用Mixins的方法
Sep 12 #Javascript
JavaScript面向对象精要(上部)
Sep 12 #Javascript
JS库之ParticlesJS使用简介
Sep 12 #Javascript
关于预加载InstantClick的问题解决方法
Sep 12 #Javascript
You might like
PHP单例模式详细介绍
2015/07/01 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python实现类的创建与使用方法示例
2017/07/25 Python
python爬虫爬取网页表格数据
2018/03/07 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
Ajxa常见问题都有哪些
2014/03/26 面试题
环境工程大学生个人的自我评价
2013/10/08 职场文书
美容院经理岗位职责
2014/04/03 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
检讨书范文
2015/01/27 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP