Vorwort
Jetzt treten Apps nur nach einem Regen auf und steigen aus. Erfahrene, unerfahrene, qualifizierte und uneingeschränkte wollen alle ein Unternehmen gründen. Mehr als 90% der Unternehmer müssen eine App erstellen, die zur Standardkonfiguration für das Unternehmertum geworden zu sein scheint.
Sobald Sie eine App gemacht haben, müssen Sie sie bewerben. Wie fördere ich es? Das Senden von Gutscheinen ist das unverzichtbare Ding. Jetzt erfordern viele Produkte oder Operationen, dass die Anzahl der Coupons zufällig ausgestellt wird, aber nicht zu zufällig sein kann. Werden alle Gutscheine verschickt? Das Geld der Investoren, oder?
Daher ist in der zufällig erzeugten Menge erforderlich, dass die Wahrscheinlichkeit kleiner Mengen größer sein sollte und die Wahrscheinlichkeit großer Mengen kleiner sein sollte. Zum Beispiel 70% von 3 Yuan, 25% von 5 Yuan und 5% von 10 Yuan. Was soll ich tun, wenn ich Gutscheine mit dieser Art von Wahrscheinlichkeit generiere?
Für die obigen Fragen reicht es nicht aus, unseren zufälligen. NEEXT (Ganzzahlbereich) zu verwenden. direkt. Da dieses Pseudo-Random nicht gewichtet ist, ist die Wahrscheinlichkeit von 3, 5 und 10 gleich.
Implementierungsideen
Nehmen wir das obige Beispiel. Die Wahrscheinlichkeit von 3 Erscheinen beträgt 70%. Wir weisen ein Gewicht von 70 zu. Die Wahrscheinlichkeit von 5 Erscheinen beträgt 25. Wir weisen ihm ein Gewicht von 25 an. Die Wahrscheinlichkeit von 10 erscheint 5%. Wir weisen ein Gewicht von 5 zu.
Wir berechnen die Summe der Gewichte in der Reihenfolge, verwenden den Wert vor der Summe der Gewichte, die in der aktuellen Zahl als Ausgangspunktwert seines Gewichtsbereichs angezeigt werden, und verwenden den Wert nach der Summe als Endpunktwert seines Gewichtsbereichs.
Auf diese Weise können wir Random.Next (100) verwenden, um zufällige Zahlen zu erstellen, dann den Bereich zu beurteilen, in dem die Zufallszahlen fallen, und dann dem entsprechenden Gutscheinwert zugeordnet werden.
Java -Implementierung
Paket com.nggirl.test.weight.random; Import Java.util.ArrayList; Import Java.util.hashMap; Import Java.util.List; Import Java.util.Random; String [] {"1", "2", "3", "4"}, New Integer [] {100,100.200.600}); zufällig r = neuer Random (); für (int i = 0; i <10; i ++) {Integer rv = R.Nextint (Wr.getMaxrandomValue ()); System.out.println (RV); System.out.println (Wr.getErementByrandomvalue (RV) .GetKey () + "" + RV);} Hashmap <String, Intiere> keycount = new Hashmaps, new Hashmaps, inpa. 0); keyCount.put ("2", 0); keyCount.put ("3", 0); keyCount.put ("4", 0); für (int i = 0; i <10000; i ++) {Integer rv = R.Nextint (Wr.getMaxRandomValue ()); String Key = RV = R.NextInt (Wr.getMaxRandomValue ()); Wr.GetElementByrandomValue (RV) .GetKey (); KeyCount. keys.length! rangegewichtelemnts () {if (Gewichtselement.SIZE () == 0) {return;} Weightelement ele0 = Gewichtselemente.get (0); Ele0.Setthresholdlow (0); ele0.setthresholdHigh (ele0.getWeight ()); Gewichtselemente. Elementgewichtsbereich wird in geordneter Weise erhöht, sie kann in eine binäre Suche nach (Gewichtselement e: Gewichtselemente) {if (rv> = E.geschossedlow () && rv <e.gethresholdHigh ()) {return e;}} return null;} öffentliche IngiqueSchaRrandHoInlement () {Ifs () {Ifs () {ifmalue () {ifmvalue () {ifmvalue () {if () {{ifmvalue () {if () {if () oder 0) {return null;} return Gewichtselements.get (Gewichtselemente.SIZE () - 1) .GETHODHODHIGH ();} public void printrvs () {für (Gewichtselement e: Gewichtselement) {System.out.println (e.toString ()); Ganzzahlgewicht;/*** Gewicht entspricht dem Bereich der zufälligen Zahlen niedrige Linien*/privates Ganzzahl Schwellenwert;/*** Gewicht entspricht dem Bereich der Zufallszahlen hohe Linien*/privates Ganzzahl -Schwellenwert; öffentliches Gewicht () {} öffentliche Gewicht (integer Gewicht) {Keey = TOSSTRING (). Gewicht) {this.key = key; this.gewicht = Gewicht;} public String getKey () {return key;} public void setKey (String key) {this.Key = key;} public Integer getWeight () {return Gewicht;} public void setwilt (Integer Gewicht) {this.weigs; setThresholdlow (Integer thresholdlow) {this.Thresholdlow = thresholdlow;} public Integer GetThresholdHigh () {return thresholdHigh;} public void SetThresholdHigh (Ganzgewerer Schwellenwert) {thisThholdhigh = thresholdHigh; bisErgebnis:
2 1028764 876
Implementierung der Dichotomie
Öffentliche Gewichtselement GetElementByrandomValue (Integer rv) {if (rv <0 || rv> getMaxrandomvalue () -1) {return null;} // Zu diesem Zeitpunkt muss RV im Bereich von 0 -getMaxrandomValue () -1, // //, //, //, und es ist, dass es ist, dass es ist. 1; int index = weilelements.size ()/2; while (true) {if (rv <wightErements.get (index) .Gethresholdlow ()) {end = index - 1;} else if (rv> = woithelElements.get (index) .gethreshigh () {start = index + 1;} {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ Ende)/2;}}Teilen wir unten ein weiteres Beispiel, um das Verständnis von Algorithmen mit Gewichtsgewicht zu stärken und gleichzeitig vorhanden zu sein!
Der Random -Algorithmus zum Gewicht wird häufig in Systemen wie Lotterie, Ressourcenplanung usw. verwendet. Es handelt sich um eine einfache Zufallsimplementierung gemäß dem Gewicht. Das Gewicht ist das Verhältnis von Hits mehrerer zufälliger Objekte (kategorisiert). Je höher die Gewichtseinstellung, desto einfacher die Treffer und die Summe der Treffer kann nicht 100 sein.
Der einfache Implementierungscode lautet wie folgt:
Import Java.util.ArrayList; Import java.util.list; import Java.util.random; öffentliche Klasse wiegen {statische Liste <WeightCategory> Kategorien = new ArrayList <weightcategory>; wc2 = new WeightCategory ("B", 20); WeightCategory WC3 = New WeightCategory ("C", 20); Kategorien.Add (Wc1); Kategorien.Add (Wc2); Kategorien.Add (WC3);} öffentliche statische Void -Main (String [] argory (initdata (); {Gewicht + = wc.getWeight ();} if (wightsum <= 0) {system.err.println ("Fehler: Gewichtsum =" + Gewichtsum. && n <m +wc.getWeight ()) {System.out.println ("Diese zufällige Kategorie ist" +wc.getCategory ()); break;} m += wc.getWeight ();}}} Klasse WeightCategory {private String -Kategorie; {super (); this.setCategory (Kategorie); this.setWeight (Gewicht);} public Integer getWeight () {return Gewicht;} public void setWeight (Integer Gewicht) {this.weight = Gewicht;} public String getCategory () {return category;} public void setcategory (String Category) {This.category = category (This.categoryErgebnis:
Zusammenfassen
Das obige ist der vollständige Inhalt dieses Artikels zur Implementierung des Zufallsalgorithmus des Java -Sprachgewichts. Ich hoffe, es wird für alle hilfreich sein. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!