zoukankan      html  css  js  c++  java
  • js实现自定义概率抽奖算法

    当我们开发抽奖程序时,经常需要配置不同奖品的概率。

    如:冰箱:30%,电脑:10%,洗衣机:50%。

    可用以下函数实现:

    getResult(arr){
      var leng = 0;
      for(var i = 0; i<arr.length; i++){
          leng += arr[i]                                     //获取总数
      }
      for(var i = 0; i < arr.length; i++){
          var random = parseInt(Math.random()*leng);       //获取 0-总数 之间的一个随随机整数
          if(random < arr[i]){
              return i                                     //如果在当前的概率范围内,得到的就是当前概率
          }
          else {
              leng -= arr[i]                                 //否则减去当前的概率范围,进入下一轮循环
          }
      }
    } 

    这个函数首先将输入数组,如[30,10,50]进行相加,求出总和作为概率分母。

    再取0到总和之间的随机数,再确定这个数是在哪个区间上。

    从数组的前面到后面,如果该数大于区间长度,则减去区间长度,继续循环,直到找到该数所在区间,就返回对应的列表下标值。

    最后,用

    list[getResult(arr)]['name']

    即可获得该奖品的name值。

  • 相关阅读:
    hibernate建表默认为UTF-8编码
    XML和JSON
    chrome 模拟发送请求的方法
    什么时候需要使用缓存?
    eclipse中查找类、方法及变量被引用的地方
    用户内容与商业
    2019第48周日
    ajax与重定向
    ifream
    Windows下找到JVM占用资源高的线程
  • 原文地址:https://www.cnblogs.com/luoyihao/p/14671802.html
Copyright © 2011-2022 走看看