详解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 相关文章推荐
收藏一些不常用,但是有用的代码
Mar 12 Javascript
jquery获取下拉列表的值为null的解决方法
Mar 18 Javascript
js禁止document element对象选中文本实现代码
Mar 21 Javascript
原始的js代码和jquery对比体会
Sep 10 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
canvas实现图像截取功能
Feb 06 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
详解webpack的配置文件entry与output
Aug 21 Javascript
微信上传视频文件提示(推荐)
Nov 22 Javascript
原生js添加一个或多个类名的方法分析
Jul 30 Javascript
JS动态显示倒计时效果
Dec 12 Javascript
如何利用js在两个html窗口间通信
Apr 27 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
php时间戳转换的示例
2014/03/31 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
vc6编写python扩展的方法分享
2014/01/17 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
化工专业大学生职业生涯规划书
2014/01/14 职场文书
网络编辑岗位职责
2014/03/18 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
十二月早安励志心语大全
2019/12/03 职场文书