筆試題--紅包算法,給定一個紅包總金額和分紅包的人數,輸出每個人隨機搶到的紅包數量。


 

 * 紅包算法,給定一個紅包總金額和分紅包的人數,輸出每個人隨機搶到的紅包數量。
 * 要求:
 * 每個人都要搶到紅包,並且金額隨機
 * 每個人搶到的金額數不小於1
 * 每個人搶到的金額數不超過總金額的30%
 * 例如總金額100,人數10,輸出【19 20 15 1 25 14 2 2 1 1】


    //最少分得紅包數
    private static final double min = 1;
    //最多分得紅包數占比
    private static final double percentMax = 0.3;

    public void allocateMoney(double money, int peopleNum) {
        double minMoney = min;
        double maxMoney = percentMax * money;
        int shareMoney = 0;
        double sum = 0;
        for (int i = 0; i < peopleNum; i++) {
            minMoney = minMoney > money - maxMoney * (peopleNum - i - 1) ? minMoney : (money - maxMoney * (peopleNum - i - 1));
            maxMoney = maxMoney < money - minMoney * (peopleNum - i - 1) ? maxMoney : (money - minMoney * (peopleNum - i - 1));
            shareMoney = (int) Math.floor((maxMoney - minMoney) * Math.random() + minMoney);
            money = money - shareMoney;
            sum += shareMoney;
            System.out.println("第" + (i + 1) + "個人搶到:" + shareMoney + "元");
        }
        System.out.println("要分配的紅包總額為:" + sum + "元");
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM