Das Verrückteste, was ich in den letzten Jahren gespielt habe, ist, rote Umschläge zu schicken, insbesondere während des chinesischen Neujahrs. Ich habe unten einen zufälligen Algorithmus für rote Umschläge geschrieben. Es ist eigentlich ganz einfach. Es bietet nur eine Denkweise. Ich hoffe, es kann dich inspirieren.
Öffentliche Klasse WxAlgorithmus { / *** @param moneysum eingeben den Gesamtbetrag* @param Rednum Geben Sie die Anzahl der roten Pakete ein. Random random = new random (); // exakte Dezimalstelle 2 Ziffern numberformat formatter = new DecimalFormat ("#. ##"); für (int i = 1; i <rednum; i ++) {// eine zufällige Zahl liegt der Wertbereich zwischen dem Mindestwert und dem Balance -String -Geld = Formatter.Format (random.nextDouble () * (moneysum - meynMin)+MoneyMin); // numerische Konvertierung moneysum = double.Valueof (formatter.format (moneysum - double.Valueof (Geld))); System.out.println ("Th" + i + "Red Envelope:" + Money + "Yuan, Balance:" + moneysum); } System.out.println ("Letzter roter Umschlag:" + moneysum + "Yuan, Balance:" + (MoneySum - MoneySum)); } public static void main (String [] args) {wxalgorithmus (10.26, 9); }}Später wurden einige WeChat Random Red Envelope -Algorithmen online für Ihre Referenz gesammelt.
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.
Es gibt auch viele aufregende Quellcode -Freigabe: Javas einfacher Algorithmus zur Allokation der roten Umschlag zur Umhüllung, um den Quellcode zu implementieren.
Paket com.sunron.test; import java.math.bigdecimal; import org.junit.test; public class hongbao {@test public void testhonbao () {hb (100, 9, 0,01); // Menge, Anzahl, Mindestwert // Zb (); } void hb (doppelte Gesamt, int num, double min) {für (int i = 1; i <num; i ++) {double safe_total = (total- (num-i)*min)/(num-i); Double Money = math.random ()*(Safe_total-min)+min; BigDecimal Money_bd = new BigDecimal (Geld); mony = meyn_bd.setScale (2, bigDecimal.round_half_up) .doubleValue (); insgesamt = Gesamtgeld; BigDecimal Total_bd = New BigDecimal (Total); Total = total_bd.setScale (2, BigDecimal.round_half_up) .DoubleValue (); System.out.println ("Th"+i+"Red Envelope:"+Money+", Balance ist:"+Gesamt+"Yuan"); } System.out.println ("th"+num+"Red Envelope:"+Total+", Balance ist: 0 yuan"); } void zb () {for (int a = 0; a <= 10000; a ++) {if (a % 1000 == 0) System.out.println (a); }}}Wenn andere rote Umschläge packen, werden wir den Algorithmus für zufällige rote Umschläge untersuchen:
public static void main (String [] args) {// die Anzahl der roten Umschläge int nummer = 10; // die Gesamtmenge des roten Umschlags float total = 100; Geld float; // die minimale rote Umschlag doppelt min = 1; Double Max; int i = 1; Liste math = new ArrayList (); DecimalFormat df = new DecimalFormat ("##. ##"); während (i <number) {// stelle sicher, dass auch wenn eine rote Umschlag der größte ist, jeder rote Umschlag nicht geringer ist als der Mindestwert der verbleibenden roten Umschläge max = insgesamt - min * (Zahl - i); int k = (int) (number - i) / 2; // Stellen Sie sicher, dass die roten Umschläge, die von den letzten beiden Personen erhalten wurden, die verbleibenden roten Umschläge nicht überschreiten, wenn (Nummer - i <= 2) {k = Nummer - i; } // Die durchschnittliche Grenze der maximalen roten Hülle beträgt max = max /k; // Stellen Sie sicher, dass jede rote Umschlag größer als der Mindestwert ist und nicht größer ist als der Maximalwert Geld = (int) (min * 100 + math.random () * (max * 100 - min * 100 + 1)); Geld = (float) Geld / 100; // zwei Dezimalplätze beibehalten Geld = float.Parsefloat (df.format (Geld)); Total = (int) (Gesamt*100 - Geld*100); Gesamt = Gesamt/100; Math.add (Geld); System.out.println ("Thread" + i + "individual get" + Geld + "links" + insgesamt); i ++; // Die letzte Person nimmt den verbleibenden roten Umschlag weg, wenn (i == nummer) {math.add (insgesamt); System.out.println ("Thread" + i + "individual get" + Total + "links 0"); }} // Auswahl des Index des größten Wertes im Array -System.out.println ("Thread in dieser Runde der roten Umschläge" + (math.indexof (collections.max (math)) + 1) + "Das beste persönliche Glück"); }Weitere aufregende Inhalte finden Sie auf "Android Wechat Development Tutorial Summary" und "Java Wechat Development Tutorial Summary". Begrüßen Sie alle zum Erlernen und Lesen.
Die oben genannten sind die verschiedenen von Ihnen geteilten WeChat -Algorithmen aus WeChat, die Ihnen eine Vielzahl von Ideen bieten. Ich hoffe, dass es für alle hilfreich sein wird, zu lernen, den WeChat Random Red Envelope -Algorithmus zu verwenden. Ich hoffe auch, dass Sie weiterhin auf aufregende Inhalte von Wulin.com achten werden.