java 微信隨機紅包算法代碼實例。本站提示廣大學習愛好者:(java 微信隨機紅包算法代碼實例)文章只能為提供參考,不一定能成為您想要的結果。以下是java 微信隨機紅包算法代碼實例正文
頭幾天的一個早晨忽然想到微信紅包應當有一個隨機算法,就本身試著寫了下,也不曉得對纰謬,看了看網上的說法,似乎到如今為止官方也沒有給出一個確實的算法,只好在這裡獻丑了,先貼出代碼:
public static double [] getMoney(double money, int num){ Random r = new Random(); DecimalFormat format = new DecimalFormat(".##"); double middle = Double.parseDouble(format.format(money/num)); double [] dou = new double[num]; double redMoney = 0; double nextMoney = money; double sum = 0; int index = 0; for(int i=num;i>0;i--){ if(i == 1){ dou[index] = nextMoney; }else{ while(true){ String str = format.format(r.nextDouble()*nextMoney); redMoney = Double.parseDouble(str); if(redMoney>0 && redMoney < middle){ break; } } nextMoney = Double.parseDouble(format.format(nextMoney - redMoney)); sum = sum + redMoney; dou[index] = redMoney; middle = Double.parseDouble(format.format(nextMoney/(i-1))); index++; } } return dou; }
這裡一個根本思緒是如許的:起首算出紅包的均勻值,再經由過程一個隨機紅包數小於這個均勻值的紅包,當該紅包發完後,紅包總金額須要響應削減,同時從新盤算這個均勻值:新的總金額%(原總紅包數-1),直到最初一個紅包時,把一切的殘剩金額塞出來。
感激浏覽,願望能贊助到年夜家,感謝年夜家對本站的支撐!