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),直到最初一個紅包時,把一切的殘剩金額塞出來。
感激浏覽,願望能贊助到年夜家,感謝年夜家對本站的支撐!