Vor ein paar Tagen dachte ich plötzlich, dass es einen zufälligen Algorithmus für WeChat Red -Umschläge geben sollte, also habe ich versucht, sie selbst zu schreiben, aber ich wusste nicht, ob es richtig war. Ich habe mir die Erklärung online angesehen. Es schien, dass der Beamte bisher keinen bestimmten Algorithmus gegeben hat, also musste ich mich hier zum Narren machen und den Code zuerst veröffentlichen:
public static double [] getMoney (Double Money, int num) {random r = new random (); DecimalFormat format = new DecimalFormat (". ##"); double Middle = double.Parsedouble (format.format (Geld/num)); double [] dou = new Double [num]; double Redmoney = 0; double NextMoney = Geld; doppelte Summe = 0; int index = 0; für (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 <mittlere) {break; }} NextMoney = double.ParSeDouble (format.format (NextMoney - RedMoney)); sum = sum + rotmoney; dou [index] = redmoney; Middle = double.ParsedoUble (format.format (NextMoney/(i-1))); Index ++; }} return dou; }Hier ist die Grundidee: Berechnen Sie zuerst den Durchschnittswert der roten Umschlag und dann eine rote Hülle mit einer zufälligen Anzahl von roten Umschlägen, die kleiner als dieser Durchschnittswert sind. Nachdem der rote Umschlag gesendet wurde, muss der Gesamtbetrag des roten Umschlags entsprechend reduziert werden. Gleichzeitig berechnen Sie den Durchschnitt neu: den neuen Gesamtbetrag % (ursprüngliche rot -Umschlagzahl -1), bis zum letzten roten Umschlag alle verbleibenden Betrag ein.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!