详解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 相关文章推荐
jQuery DIV弹出效果实现代码
Jul 03 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
Jul 14 Javascript
js 创建书签小工具之理论
Feb 25 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
Jul 22 Javascript
JS删除字符串中重复字符方法
Mar 09 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
javascript 中的继承实例详解
May 05 Javascript
JS实现的base64加密解密操作示例
Apr 18 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
May 12 Javascript
小程序实现左滑删除的效果的实例代码
Oct 19 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公用函数列表[正则]
2007/02/22 PHP
基于PHP常用函数的用法详解
2013/05/10 PHP
探讨PHP中this,self,parent的区别详解
2013/06/08 PHP
yii的CURD操作实例详解
2014/12/04 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
Js sort排序使用方法
2011/10/17 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
Python 装饰器使用详解
2017/07/29 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
wxPython实现窗口用图片做背景
2018/04/25 Python
python复制文件到指定目录的实例
2018/04/27 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
python实现五子棋游戏
2019/06/18 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
python中判断文件结束符的具体方法
2020/08/04 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
毕业生多媒体设计求职信
2013/10/12 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
工作检讨书500字
2014/10/19 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle