详解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 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
Javascript学习笔记8 用JSON做原型
Jan 11 Javascript
jQuery插件开发全解析
Oct 10 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
Aug 12 Javascript
jquery div拖动效果示例代码
Dec 08 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
Mar 18 Javascript
手机图片预览插件photoswipe.js使用总结
Aug 25 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
Sep 05 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
Nov 23 Javascript
Vue进度条progressbar组件功能
Apr 17 Javascript
详解关于Vue单元测试的几个坑
Apr 26 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
Oct 24 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
与数据库连接
2006/10/09 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
用javascript实现画板的代码
2007/09/05 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
详解Vue中watch的高级用法
2018/05/02 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python中Flask框架简单入门实例
2015/03/21 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
使用OpCode绕过Python沙箱的方法详解
2019/09/03 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
python3注册全局热键的实现
2020/03/22 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
学习python需要有编程基础吗
2020/06/02 Python
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
汇科协同Java笔试题
2012/03/31 面试题
优秀毕业自我鉴定
2014/02/15 职场文书
员工入职担保书范文
2014/04/01 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
匿名信格式范文
2015/05/27 职场文书
Python 中面向接口编程
2022/05/20 Python