• 抽奖概率


    /**
    * 通过奖品列表中的概率抽取奖品
    *
    * @param list
    * @return
    */
    private GiftPackageRule getPrize(List<GiftPackageRule> list) {
    if (list == null || list.size() < 1) return null;

    // 先计算所有中奖率的总和
    double total = 0.0;
    for (GiftPackageRule dpr : list) {
    total += dpr.getProbability();
    }

    //如果概率小于100的话,增加一个不中奖的概率,去掉这行代码就是100%中奖
    if (total < 100) {
    GiftPackageRule giftPackageRule = new GiftPackageRule();
    giftPackageRule.setProbability((int) (100 - total));
    list.add(giftPackageRule);
    }

    // 获取一个代表中奖的随机值
    double bingo = Math.random() * total;

    // 判断这个中奖值落在哪个奖品上
    for (GiftPackageRule dpr : list) {
    if (bingo < dpr.getProbability()) {
    if (dpr.getGiftPackId() == null) {
    return null;
    } else {
    return dpr;
    }
    } else {
    bingo -= dpr.getProbability();
    }
    }
    return null;
    }
  • 相关阅读:
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
  • 原文地址:https://www.cnblogs.com/tinya/p/10001858.html
Copyright © 2020-2023  润新知