


Golang implementiert den Double-Mean-Algorithmus und die Methode zum Erfassen roter Umschläge
Das Folgende wird bereitgestellt von Die Kolumne „Golang-Tutorial“ stellt Golang vor, wie er den Double-Mean-Algorithmus und die Methode zum Ergreifen roter Umschläge implementiert. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!
Jeder kennt sicherlich das Ergreifen roter Umschläge, aber haben Sie jemals darüber nachgedacht, wie das Ergreifen roter Umschläge gelingt?
Zuerst müssen wir die Anforderungen und die Randbedingungen der Anforderungen klären. Es gibt drei Hauptbeschränkungen für rote Umschläge: a. Der Gesamtbetrag ist die Gesamtmenge der roten Umschläge, nicht mehr oder weniger. b Der Mindestwert beträgt 0,01 Yuan, das heißt, jeder hat einen Anteil
c. Die Anzahl der roten Umschläge, die jede Person ergreift, sollte so gleichmäßig wie möglich sein
Nehmen wir an, dass der Gesamtbetrag M Yuan beträgt, N Personen, der Betrag jeder Ergreifung = (0, (M/N) *2), Zum Beispiel wurden die gleichen Bedingungen zuvor erwähnt, der Betrag ist 100, die Anzahl der Personen ist 10,
Der Betrag, den die erste Person gepackt hat, ist (0, 20) und der erfasste Wert sollte gemäß der Normalverteilung bei etwa 10 liegen, was viel niedriger ist als Die Wahrscheinlichkeit von 10 ist sehr klein, und die Summe der Wahrscheinlichkeit, viel größer als 10 zu sein, ist auch hier sehr klein Wir gehen davon aus, dass der Wert, den die erste Person ergreift, 10 ist;
Der Betrag, den die zweite Person ergreift, ist (0,90/9 *2)= (0,20), derselbe wie die erste Person, die zweite Der Betrag des roten Umschlags einer Person sollte ebenfalls etwa 10 betragen;
Der Rest der Leute und so weiter.
Ich habe „Architektonisches Design der roten WeChat-Umschläge“ überprüft und diese Methode wird darin verwendet. Dieser Algorithmus ist jedoch nicht perfekt. Wenn die erste Person 15 erreicht, beträgt der Bereich der zweiten Person (0,18,89). Wenn die zweite Person einen hohen Wert erreicht, ist dies schädlich für die Personen dahinter >Schauen wir uns an, wie es in golang geht. Implementieren Sie diesen Double-Mean-Algorithmus p>
package mainimport ( "fmt" "math/rand" "time")func main() { //10个人 抢10000分 也就是10个人抢100块钱 count,amount := int64(10),int64(10000) remain := amount sum := int64(0) for i := int64(0);i<count;i++ { x := DoubleAverage(count-i, remain) remain -= x sum += x fmt.Println(i+1,"=",float64(x)/float64(100),", ") } fmt.Println() fmt.Println("总和是:",sum)}//提前定义能抢到的最小金额1分var min int64 = 1//二倍均值算法func DoubleAverage(count,amount int64) int64 { if count == 1 { return amount } //计算出最大可用金额 max := amount - min*count //计算出最大可用平均值 avg := max / count //二倍均值基础上再加上最小金额 防止出现金额为0 avg2 := 2 * avg + min //随机红包金额序列元素,把二倍均值作为随机的最大数 rand.Seed(time.Now().UnixNano()) x := rand.Int63n(avg2) + min return x}Nach dem Login kopierenSehen Sie sich die Ergebnisse an:
Das obige ist der detaillierte Inhalt vonGolang implementiert den Double-Mean-Algorithmus und die Methode zum Erfassen roter Umschläge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Das sichere Lesen und Schreiben von Dateien in Go ist von entscheidender Bedeutung. Zu den Richtlinien gehören: Überprüfen von Dateiberechtigungen, Schließen von Dateien mithilfe von Verzögerungen, Validieren von Dateipfaden, Verwenden von Kontext-Timeouts. Das Befolgen dieser Richtlinien gewährleistet die Sicherheit Ihrer Daten und die Robustheit Ihrer Anwendungen.

Wie konfiguriere ich Verbindungspooling für Go-Datenbankverbindungen? Verwenden Sie den DB-Typ im Datenbank-/SQL-Paket, um eine Datenbankverbindung zu erstellen. Legen Sie MaxOpenConns fest, um die maximale Anzahl gleichzeitiger Verbindungen festzulegen. Legen Sie ConnMaxLifetime fest, um den maximalen Lebenszyklus der Verbindung festzulegen.

JSON-Daten können mithilfe der gjson-Bibliothek oder der json.Unmarshal-Funktion in einer MySQL-Datenbank gespeichert werden. Die gjson-Bibliothek bietet praktische Methoden zum Parsen von JSON-Feldern, und die Funktion json.Unmarshal erfordert einen Zieltypzeiger zum Unmarshalieren von JSON-Daten. Bei beiden Methoden müssen SQL-Anweisungen vorbereitet und Einfügevorgänge ausgeführt werden, um die Daten in der Datenbank beizubehalten.

Der Unterschied zwischen dem GoLang-Framework und dem Go-Framework spiegelt sich in der internen Architektur und den externen Funktionen wider. Das GoLang-Framework basiert auf der Go-Standardbibliothek und erweitert deren Funktionalität, während das Go-Framework aus unabhängigen Bibliotheken besteht, um bestimmte Zwecke zu erreichen. Das GoLang-Framework ist flexibler und das Go-Framework ist einfacher zu verwenden. Das GoLang-Framework hat einen leichten Leistungsvorteil und das Go-Framework ist skalierbarer. Fall: Gin-Gonic (Go-Framework) wird zum Erstellen der REST-API verwendet, während Echo (GoLang-Framework) zum Erstellen von Webanwendungen verwendet wird.

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...

Häufig gestellte Fragen zur Go-Framework-Entwicklung: Framework-Auswahl: Hängt von den Anwendungsanforderungen und Entwicklerpräferenzen ab, z. B. Gin (API), Echo (erweiterbar), Beego (ORM), Iris (Leistung). Installation und Verwendung: Verwenden Sie den Befehl gomod, um das Framework zu installieren, zu importieren und zu verwenden. Datenbankinteraktion: Verwenden Sie ORM-Bibliotheken wie gorm, um Datenbankverbindungen und -operationen herzustellen. Authentifizierung und Autorisierung: Verwenden Sie Sitzungsverwaltungs- und Authentifizierungs-Middleware wie gin-contrib/sessions. Praktischer Fall: Verwenden Sie das Gin-Framework, um eine einfache Blog-API zu erstellen, die POST, GET und andere Funktionen bereitstellt.

Die FindStringSubmatch-Funktion findet die erste Teilzeichenfolge, die mit einem regulären Ausdruck übereinstimmt: Die Funktion gibt ein Segment zurück, das die passende Teilzeichenfolge enthält, wobei das erste Element die gesamte übereinstimmende Zeichenfolge und die nachfolgenden Elemente einzelne Teilzeichenfolgen sind. Codebeispiel: regexp.FindStringSubmatch(text,pattern) gibt einen Ausschnitt übereinstimmender Teilzeichenfolgen zurück. Praktischer Fall: Es kann verwendet werden, um den Domänennamen in der E-Mail-Adresse abzugleichen, zum Beispiel: email:="user@example.com", pattern:=@([^\s]+)$, um die Übereinstimmung des Domänennamens zu erhalten [1].

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...
