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 相关文章推荐
jquery focus(fn),blur(fn)方法实例代码
Dec 16 Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 Javascript
js判断滚动条是否已到页面最底部或顶部实例
Nov 20 Javascript
jquery插件bxslider用法实例分析
Apr 16 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
Nov 17 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
May 16 Javascript
基于javascript实现最简单的选项卡切换效果
May 16 Javascript
Vue.JS入门教程之列表渲染
Dec 01 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
Dec 07 Javascript
Angularjs中的ui-bootstrap的使用教程
Feb 19 Javascript
实例讲解JavaScript 计时事件
Jul 04 Javascript
详解vue 中 scoped 样式作用域的规则
Sep 14 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脚本中include文件出错解决方法
2008/11/20 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
Python的迭代器和生成器使用实例
2015/01/14 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
Python PyQt5整理介绍
2020/04/01 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
白色公司:The White Company
2017/10/11 全球购物
暑假家长评语大全
2014/04/17 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
SpringBoot Http远程调用的方法
2022/08/14 Java/Android