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 相关文章推荐
慎用 somefunction.prototype 分析
Jun 02 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
Mar 10 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
Nov 01 Javascript
jQuery.form插件的使用及跨域异步上传文件
Apr 27 Javascript
前端微信支付js代码
Jul 25 Javascript
Bootstrap栅格系统学习笔记
Nov 25 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
Mar 09 Javascript
Node.js 中exports 和 module.exports 的区别
Mar 14 Javascript
详解React中setState回调函数
Jun 14 Javascript
Webpack之tree-starking 解析
Sep 11 Javascript
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
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
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
php自动获取关键字的方法
2015/01/06 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
python numpy中cumsum的用法详解
2019/10/17 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
最新pycharm安装教程
2020/11/18 Python
python中yield的用法详解
2021/01/13 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
高中学生干部学习的自我评价
2014/02/21 职场文书
个人评语大全
2014/05/04 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
《绝招》教学反思
2016/02/20 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python