详解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 相关文章推荐
HTML中不支持静态Expando的元素的问题
Mar 08 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
JavaScript 里的类数组对象
Apr 08 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
JS、jQuery中select的用法详解
Apr 21 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 Javascript
性能优化之代码优化页面加载速度
Mar 01 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
Angular2安装angular-cli
May 21 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
在layui.use 中自定义 function 的正确方法
Sep 16 Javascript
vue $router和$route的区别详解
Dec 02 Vue.js
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正则表达式(regar expression)
2011/09/10 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
Safari5中alert的无限循环BUG
2011/04/07 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
Python中多线程及程序锁浅析
2015/01/21 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
python web框架中实现原生分页
2019/09/08 Python
Python内置函数locals和globals对比
2020/04/28 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
文员个人的求职信范文
2013/09/26 职场文书
大学四年的个人自我评价
2014/01/14 职场文书
志愿者服务感言
2014/02/27 职场文书
大学新生军训自我鉴定
2014/03/18 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
离职证明范本
2015/06/12 职场文书