详解JavaScript按概率随机生成事件

 更新时间:2017年08月02日 17:23:50   作者:silenceboy  
本篇文章主要介绍了详解JavaScript按概率随机生成事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近做了一个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));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于Bootstrap表单验证功能

    基于Bootstrap表单验证功能

    这篇文章主要为大家详细介绍了基于Bootstrap表单验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • JS延时器提示框的应用实例代码解析

    JS延时器提示框的应用实例代码解析

    这篇文章主要介绍了JS延时器提示框的应用实例代码解析 的相关资料,需要的朋友可以参考下
    2016-04-04
  • ES6的函数rest参数使用小结

    ES6的函数rest参数使用小结

    这篇文章主要介绍了ES6的函数rest参数用法,通过一个rest参数代替arguments变量的例子,对ES6 rest参数用法讲解的非常详细,需要的朋友可以参考下
    2023-08-08
  • JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)

    JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)

    这篇文章主要介绍了仿微信(电话)联系人列表滑动字母索引实例,通过for循环进行判断,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。
    2017-08-08
  • 前端取消接口调用的方法示例

    前端取消接口调用的方法示例

    这篇文章主要介绍了前端取消接口调用的相关资料,讲解了XMLHttpRequest和AbortController两种取消HTTP请求的方法,XMLHttpRequest通过abort()方法取消请求,而AbortController提供了一个更现代和灵活的解决方案,需要的朋友可以参考下
    2025-03-03
  • JS回调函数 callback的理解与使用案例分析

    JS回调函数 callback的理解与使用案例分析

    这篇文章主要介绍了JS回调函数 callback的理解与使用,结合具体案例形式分析了javascript回调函数的功能、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-09-09
  • 微信、QQ、微博、Safari中使用js唤起App

    微信、QQ、微博、Safari中使用js唤起App

    本篇文章主要介绍了js在微信、微博、QQ、Safari唤起App的解决方案,有这方面需要的朋友参考下吧。
    2018-01-01
  • bootstrap动态调用select下拉框的实例代码

    bootstrap动态调用select下拉框的实例代码

    今天小编就为大家分享一篇bootstrap动态调用select下拉框的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 探索Javascript中this的奥秘

    探索Javascript中this的奥秘

    本文介绍了JavaScript中的this关键字在各种情况下的含义,实例都很简单,这样更能有助于加深理解。虽然这只是js中一个很小的概念,但借此我们可以了解js中函数的执行环境,充分掌握this的相关知识有助于我们在编写面向对象的JavaScript程序时能够游刃有余。
    2016-12-12
  • JS页面获取 session 值,作用域和闭包学习笔记

    JS页面获取 session 值,作用域和闭包学习笔记

    这篇文章主要介绍了JS页面获取 session 值,作用域和闭包,结合具体实例形式分析了javascript与jsp交互获取session值、函数作用域及闭包相关操作技巧,需要的朋友可以参考下
    2019-10-10

最新评论