详解JavaScript按概率随机生成事件


Posted in Javascript onAugust 02, 2017

最近做了一个JavaScript按概率随机生成事件,于是整理了一下思路,写了一个小demo:

/*
*在抽奖的活动中经常会用到这个算法,不同奖项的获取概率不同,要按概率去随机生成对应的奖品
*
*/
function random(arr1, arr2) {
  var sum = 0,
    factor = 0,
    random = Math.random();

  for(var i = arr2.length - 1; i >= 0; i--) {
    sum += arr2[i]; // 统计概率总和
  };
  random *= sum; // 生成概率随机数
  for(var i = arr2.length - 1; i >= 0; i--) {
    factor += arr2[i];
    if(random <= factor) 
     return arr1[i];
  };
  return null;
};

// test
var a = ['mac', 'iphone', 'vivo', 'OPPO'];
var b = [0.1, 0.2, 0.3, 0.4];
console.log(random(a, b));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
May 25 Javascript
JS实现向表格行添加新单元格的方法
Mar 30 Javascript
JavaScript中使用指数方法Math.exp()的简介
Jun 15 Javascript
javascript的document中的动态添加标签实现方法
Oct 24 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 Javascript
Ionic + Angular.js实现图片轮播的方法示例
May 21 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
获取layer.open弹出层的返回值方法
Aug 20 Javascript
element el-input directive数字进行控制
Oct 11 Javascript
基于vue写一个全局Message组件的实现
Aug 15 Javascript
vue动态设置路由权限的主要思路
Jan 13 Vue.js
angular中的cookie读写方法
Aug 02 #Javascript
webpack进阶——缓存与独立打包的用法
Aug 02 #Javascript
使用vue构建移动应用实战代码
Aug 02 #Javascript
React Native之ListView实现九宫格效果的示例
Aug 02 #Javascript
jQuery初级教程之网站品牌列表效果
Aug 02 #jQuery
ReactNative列表ListView的用法
Aug 02 #Javascript
ReactNative页面跳转Navigator实现的示例代码
Aug 02 #Javascript
You might like
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php的一些小问题
2010/07/03 PHP
php开启openssl的方法
2014/05/15 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
js window.event对象详尽解析
2009/02/17 Javascript
JS与框架页的操作代码
2010/01/17 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
使用python实现rsa算法代码
2016/02/17 Python
Python对象属性自动更新操作示例
2018/06/15 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python实现大文本文件分割
2019/07/22 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Python如何实现远程方法调用
2020/08/07 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
企业管理专业个人求职信范文
2013/09/24 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
居安思危观后感
2015/06/11 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
Go中的条件语句Switch示例详解
2021/08/23 Golang