어느 날 밤 며칠 전, 나는 갑자기 Wechat Red Envelopes에 대한 임의의 알고리즘이 있어야한다고 생각했기 때문에 직접 글을 쓰려고했지만 그것이 옳은지 몰랐습니다. 나는 온라인에서 진술을 보았다. 공무원은 지금까지 확실한 알고리즘을 제공하지 않은 것처럼 보였으므로 여기서 나 자신을 바보로 만들고 코드를 먼저 게시해야했습니다.
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 = 새로운 더블 [num]; 이중 redmoney = 0; Double NextMoney = Money; 이중 합계 = 0; int index = 0; for (int i = num; i> 0; i-) {if (i == 1) {do [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)); 합 = 합계 + redmoney; Dou [index] = redmoney; middle = double.parsedouble (format.format (NextMoney/(i-1))); 색인 ++; }} return dou; }기본 아이디어는 다음과 같습니다. 먼저 빨간 봉투의 평균 값을 계산 한 다음이 평균 값보다 작은 임의의 빨간 봉투로 빨간 봉투를 전달하십시오. 빨간 봉투가 전송 된 후에는 적색 봉투의 총량을 그에 따라 줄여야합니다. 동시에, 평균을 다시 계산하십시오 : 새로운 총액 % (원래 총 빨간 봉투 번호 -1), 마지막 빨간 봉투까지 나머지 금액을 모두 넣습니다.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!