JavaScript按概率随机生成事件

简介: 最近做了一个JavaScript按概率随机生成事件,于是整理了一下思路,写了一个小demo

最近做了一个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));
相关文章
|
3月前
|
Web App开发 JavaScript 前端开发
javascript onkeydown事件
javascript onkeydown事件
|
5月前
|
JavaScript 前端开发
js事件队列
js事件队列
148 55
|
3月前
|
JavaScript
js两种移除事件的方法
js两种移除事件的方法
52 3
|
4月前
|
JavaScript 前端开发
JavaScript 事件
JavaScript 事件
43 2
|
5月前
|
JavaScript 前端开发
JavaScript 事件的绑定
JavaScript 事件的绑定
54 0
|
2月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
72 5
|
3月前
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
69 6
|
4月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
33 5
|
4月前
|
监控 JavaScript 前端开发
|
3月前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
213 0