抽獎機率

/** * 經過獎品列表中的機率抽取獎品 * * @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;}
相關文章
相關標籤/搜索