详解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 相关文章推荐
js和jquery批量绑定事件传参数一(新猪猪原创)
Jun 23 Javascript
Node.js 制作实时多人游戏框架
Jan 08 Javascript
JavaScript组件开发完整示例
Dec 15 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
Jun 08 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
May 08 Javascript
浅谈React Event实现原理
Sep 20 Javascript
使用p5.js实现动态GIF图片临摹重现
Oct 23 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 Javascript
如何使用jQuery操作Cookies方法解析
Sep 08 jQuery
vue+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
微信小程序反编译的实现
Dec 10 Javascript
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
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
Yii中表单用法实例详解
2016/01/05 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP最常用的正则表达式
2017/02/13 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
js倒计时小程序
2013/11/05 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
js实现盒子移动动画效果
2020/08/09 Javascript
python根据路径导入模块的方法
2014/09/30 Python
Python功能键的读取方法
2015/05/28 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
python实现flappy bird游戏
2018/12/24 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python函数不定长参数使用方法解析
2019/12/14 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
python3中sys.argv的实例用法
2020/04/24 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
优秀的教师个人的中文求职信
2013/09/21 职场文书
烹调加工管理制度
2014/02/04 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技