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 相关文章推荐
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
Apr 29 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
Jun 09 Javascript
js实现键盘控制DIV移动的方法
Jan 10 Javascript
JavaScript数组去重的两种方法推荐
Apr 05 Javascript
Javascript中的arguments对象
Jun 20 Javascript
Node.js中.pfx后缀文件的处理方法
Mar 10 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
Mar 08 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
May 03 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
Jan 08 Javascript
vue组件中实现嵌套子组件案例
Aug 31 Javascript
JavaScript实现跟随鼠标移动的盒子
Jan 28 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过程中的一些注意点的总结
2013/10/25 PHP
php通过session防url攻击方法
2014/12/10 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
javascript 节点排序 2
2011/01/31 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
机械设计及其自动化专业推荐信
2013/10/31 职场文书
文秘专业应届生求职信范文
2013/11/14 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
导游词400字
2015/02/13 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书