閱讀124 返回首頁    go 魔獸


微信紅包金額分配的算法,外掛軟件控製掃雷尾數的可行性

算法

算法很簡單,不是提前算好,而是搶紅包時計算:

紅包裏的金額怎麼算?為什麼出現各個紅包金額相差很大?

答:隨機,額度在0.01和剩餘平均值*2之間。

實現

實現上述算法的邏輯主要是:

public static double getRandomMoney(LeftMoneyPackage _leftMoneyPackage) { if (_leftMoneyPackage.peoples == 1) { _leftMoneyPackage.peoples--; return (double) Math.round(_leftMoneyPackage.leftMoney * 100) / 100; } Random r = new Random(); double min = 0.01; double max = _leftMoneyPackage.leftMoney / _leftMoneyPackage.peoples * 2; double money = r.nextDouble() * max; money = money

LeftMoneyPackage

數據結構如下:

class LeftMoneyPackage { int peoples; double leftMoney; }

測試時初始化相關數據是:

static void init() { leftMoneyPackage.peoples = 30; leftMoneyPackage.leftMoney = 500; }

測試結果

單詞測試隨機紅包

以上麵的初始化數據(30人搶500塊),執行了兩次,結果如下:

// 第一次15.69 21.18 24.11 30.85 0.74 20.85 2.96 13.43 11.12 24.87 1.86 19.62 5.97 29.33 3.05 26.94 18.69 34.47 9.4 29.83 5.17 24.67 17.09 29.96 6.77 5.79 0.34 23.89 40.44 0.92// 第二次10.44 18.01 17.01 21.07 11.87 4.78 30.14 32.05 16.68 20.34 12.94 27.98 9.31 17.97 12.93 28.75 12.1 12.77 7.54 10.87 4.16 25.36 26.89 5.73 11.59 23.91 17.77 15.85 23.42 9.77

對應圖表如下:

第一次隨機紅包數據展示

還有一張:

第二次隨機紅包數據展示

多次均值

重複執行200次的均值

最後更新:2017-10-08 01:36:50

  上一篇:go 上百次測試,微信紅包的“規律”,控製紅包尾數的可能性
  下一篇:go 微信紅包隨機算法,用數據分析外掛軟件控製掃雷埋雷的可能性