Java一個簡單的紅包生成算法

今天小編就爲大家分享一篇關於Java一個簡單的紅包生成算法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

一個簡單的紅包生成算法,代碼如下:

/**
 * 紅包
 * @param n
 * @param money 單位:分
 * @return
 **/
public static double[] redPacket(int n, double money) {
    // 紅包結果
    double[] result = new double[n];
    // 隨機數
    double[] randNum = new double[n];
    // 隨機總數
    double randSum = 0;
    // 保證每個人都分到一分錢,扣除後分配
    double redSum = money - n;
    // 先隨機,生成指定個數的隨機數
    for (int i = 0; i < randNum.length; i++) {
      randNum[i] = Math.random() * redSum;
      randSum += randNum[i];
    }
    // 重新分配
    double left = redSum;
    // 設置隨機紅包結果
    for (int i = 0; i < result.length-1; i++) {
      // 取整
      result[i] = Math.round(randNum[i] / randSum * redSum);
      left -= result[i];
      // 每人至少一分錢
      result[i] = (result[i] + 1) * 1.0 / 100;
    }
    // 設置最後一個紅包
    result[n-1] = (left + 1) * 1.0 / 100;
    return result;
 }

算法很簡單,僅供參考,有考慮不到之處,歡迎指正!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章