详解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 Sort 表格排序
Oct 31 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
Dec 28 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
Sep 14 Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
JavaScript学习笔记整理_setTimeout的应用
Sep 19 Javascript
jquery获取easyui日期控件的值实现方法
Nov 09 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
vue-star评星组件开发实例
Mar 01 Javascript
JS forEach跳出循环2种实现方法
Jun 24 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
Nov 20 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 foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
php截取字符串函数分享
2015/02/02 PHP
一段实用的php验证码函数
2016/05/19 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
js跳转页面方法总结
2014/01/29 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
python进阶教程之循环对象
2014/08/30 Python
python实现批量监控网站
2016/09/09 Python
详解Python核心对象类型字符串
2018/02/11 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
python制作抽奖程序代码详解
2021/01/15 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
机械专业应届生求职信
2013/12/12 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
特此通知格式
2015/04/27 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python