详解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工具_Form 封装
Aug 21 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
Nov 18 Javascript
js 第二代身份证号码的验证机制代码
May 12 Javascript
js substr支持中文截取函数代码(中文是双字节)
Apr 17 Javascript
HTML5之lang属性与dir属性的详解
Jun 19 Javascript
javascript产生随机数方法汇总
Jan 25 Javascript
AngularJS自动表单验证
Feb 01 Javascript
网页中右键功能的实现方法之contextMenu的使用
Feb 20 Javascript
jquery ui sortable拖拽后保存位置
Apr 27 jQuery
node文件上传功能简易实现代码
Jun 16 Javascript
javascript中的数据类型检测方法详解
Aug 07 Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 jQuery
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
法压式咖啡之制作法
2021/03/03 冲泡冲煮
php 文件缓存函数
2011/10/08 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
Python新手们容易犯的几个错误总结
2017/04/01 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
简单分析python的类变量、实例变量
2019/08/23 Python
django ORM之values和annotate使用详解
2020/05/19 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
小学教师暑期培训方案
2014/08/28 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
员工开除通知书
2015/04/25 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
民事调解协议书
2016/03/21 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python