详解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 创建Dom元素
May 07 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
javascript中普通函数的使用介绍
Dec 19 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
jQuery性能优化技巧分析
Feb 20 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
使用jQuery制作基础的Web图片轮播效果
Apr 22 Javascript
JavaScript 函数的执行过程
May 09 Javascript
JS查找字符串中出现最多的字符及个数统计
Feb 04 Javascript
Angular2平滑升级到Angular4的步骤详解
Mar 29 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
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
Yii框架中memcache用法实例
2014/12/03 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
javascript eval函数深入认识
2009/02/21 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
python按照多个条件排序的方法
2019/02/08 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
给孩子的新年寄语
2014/04/08 职场文书
和睦家庭事迹
2014/05/14 职场文书
三十年同学聚会感言
2015/07/30 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
python库sklearn常用操作
2021/08/23 Python