详解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 while语句和do while语句的区别分析
Dec 08 Javascript
jquery checkbox,radio是否选中的判断代码
Mar 20 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
javascript实现俄罗斯方块游戏的思路和方法
Apr 27 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
Jun 16 Javascript
JS版微信6.0分享接口用法分析
Oct 13 Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
Dec 26 Javascript
jquery动态添加带有样式的HTML标签元素方法
Feb 24 jQuery
Vue中通过Vue.extend动态创建实例的方法
Aug 13 Javascript
Vue前端项目部署IIS的实现
Jan 06 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
Sep 09 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/02/08 PHP
php中取得文件的后缀名?
2012/02/20 PHP
jquery中动态效果小结
2010/12/16 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
js 数据类型判断的方法
2020/12/03 Javascript
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
python实时监控cpu小工具
2018/06/21 Python
python turtle 绘制太极图的实例
2019/12/18 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
毕业生找工作的求职信范文
2013/12/24 职场文书
庆七一活动总结
2014/08/27 职场文书
三下乡个人总结
2015/03/04 职场文书
保护校园环境倡议书
2015/04/28 职场文书
焦裕禄观后感
2015/06/03 职场文书
增值税发票丢失证明
2015/06/19 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL