使用java构建一个挡板程序-2-简单权重算法

计算响应下标方法

总体思路:传入 N个int值,计算其和。获取一个int随机数,并判断当前随机值是否在该下标中。

例如传入: 1,5,9则 sum=15。随机【0-15】假设得到8则:

  if(8<大于1) 返回 下标0 ,if(8<1+5) 返回1,if(8<1+5+9)则返回2,明显最终返回下标是2。

  同理:0-1:返回 0;2-6 返回1;7-15 返回2;

方法如下:

/**
   * @param weight 权重 , 总和不能超过int.max且大于0
   * @return 对应下标
   */
  public static int weightIndex(Integer... weight) {
    int weightSum = 0;
    for (int weightValue : weight) {
      weightSum += weightValue;
    }
    int randomNum = random.nextInt(weightSum);
    double stepWeightSum = 0;
    for (int i = 0; i < weight.length; i++) {
      stepWeightSum += weight[i];
      if (randomNum < stepWeightSum) {
        return i;
      }
    }
    return -1;
  }

根据得到的下标,获取下标对应的模板名,根据模板名再返回指定响应报文即可。 

 

源码位置:https://gitee.com/crazyAsm/Tailgate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值