详解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 相关文章推荐
javascript 进度条 实现代码
Jul 30 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
Aug 12 Javascript
jQuery实现“扫码阅读”功能
Jan 21 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
javascript常用的设计模式
Feb 09 Javascript
js实现三级联动效果(简单易懂)
Mar 27 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
Vue Prop属性功能与用法实例详解
Feb 23 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
Apr 27 Javascript
JS绘图Flot如何实现动态可刷新曲线图
Oct 16 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编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
jQuery操作css样式
2017/05/15 jQuery
jQuery异步提交表单实例
2017/05/30 jQuery
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
如何搜索查找并解决Django相关的问题
2014/06/30 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
python 不以科学计数法输出的方法
2018/07/16 Python
django富文本编辑器的实现示例
2019/04/10 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
公司经营目标责任书
2015/01/29 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers