Java版 微信紅包算法

jopen 8年前發布 | 2K 次閱讀 Java

 private double[] divide(double totalMoney,int num,double minMoney){
        double[] each = new double[num];
        for(int i=0;i<num-1;i++){
            //計算最大安全值,保證不會超出  。如果安全值越大,價格波動越大  .建議是平均值
            double maxSafeMoney = (totalMoney - (num-1-i)minMoney) / (num-1-i);
            //隨機算出最小值,保證不低于最小值
            each[i] = Math.random()(maxSafeMoney-minMoney)+minMoney;
            //計算當前剩下的錢
            totalMoney = totalMoney - each[i];
        }
        each[num-1] = totalMoney;
        return each;
    }

@Test
public void test3(){
    double[] rs = divide(200,10,0.01);
    for(double each:rs){
        System.out.format("%.2f\n",each);
    }
}</pre> 


結果:

16.70
21.37
18.89
12.13
11.35
23.21
24.32
7.39
14.10
50.57

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!