Heim  >  Artikel  >  Backend-Entwicklung  >  Algorithmus zur Implementierung roter WeChat-Umschläge basierend auf PHP

Algorithmus zur Implementierung roter WeChat-Umschläge basierend auf PHP

墨辰丷
墨辰丷Original
2018-06-01 16:45:281898Durchsuche

Jeder hat WeChat verwendet, um rote Umschläge in großen Mengen zu versenden, aber wie erreicht man den Massenversand roter Umschläge in WeChat? In diesem Artikel erfahren Sie mehr über die Antwort. Interessierte Freunde können sich auf

beziehen. Ich habe plötzlich einen roten Umschlag an die Alumni-WeChat-Gruppe gesendet und den Gesamtbetrag des roten Umschlags auf 10 Yuan festgelegt kann es zufällig erhalten.
Ein interessantes Ergebnis erschien:
A erhielt 0,26 Yuan
B erhielt 0,29 Yuan
C erhielt 0,02 Yuan
D erhielt 0,56 Yuan
E erhielt 0,64 Yuan
...
Welchen Algorithmus verwendet WeChat dazu? Ich habe einfach bei Baidu nachgeschaut und festgestellt, dass es in Zhihu nur eine relativ beliebte Diskussion gibt. Die Diskussion ist jedoch zu ausführlich und scheint eine Falle zu sein.
Ich habe es nach meiner eigenen Logik versucht:
1. Jeder muss in der Lage sein, rote Umschläge zu erhalten = Gesamtbetrag;
3. Die Anzahl der roten Umschläge, die jede Person erhält, variiert, aber der Unterschied darf nicht zu groß sein, sonst wird es uninteressant
4. Der Algorithmus muss einfach sein, sonst scheitert er Signatur;
Offiziell Erstellen Sie vor dem Codieren zunächst ein progressives Modell, um die Regeln zu analysieren
Stellen Sie den Gesamtbetrag auf 10 Yuan ein und N Personen erhalten ihn nach dem Zufallsprinzip:

N=1 dann Betrag der roten Umschläge = Zwei rote Umschläge = 10 – der Betrag des ersten roten Umschlags

N=3 Roter Umschlag 1=eine Zufallszahl zwischen 0,01 und 0,98 Roter Umschlag 2 = 0,01 bis (10 - Eine bestimmte zufällige Anzahl von roten Umschlägen 1-0,01)
Roter Umschlag 3 = 10 - Roter Umschlag 1 - Roter Umschlag 2

... An diesem Punkt erscheint das Muster! Beginnen Sie mit dem Codieren! PHP-Code

header("Content-Type: text/html;charset=utf-8");//输出不乱码,你懂的 
$total=10;//红包总额 
$num=8;// 分成8个红包,支持8人随机领取 
$min=0.01;//每个人最少能收到0.01元 
 
for ($i=1;$i<$num;$i++) 
{ 
 $safe_total=$total-($num-$i)*$min;//随机安全上限 
 $money=mt_rand($min*100,$safe_total*100)/100; 
 $total=$total-$money; 
 echo &#39;第&#39;.$i.&#39;个红包:&#39;.$money.&#39; 元,余额:&#39;.$total.&#39; 元 <br/>&#39;; 
} 
echo &#39;第&#39;.$num.&#39;个红包:&#39;.$total.&#39; 元,余额:0 元&#39;;

Nach der Eingabe ist die Schwankung zu groß und die Daten zu langweilig!


Der erste rote Umschlag: 7,48 Yuan, Restbetrag: 2,52 Yuan
Der zweite rote Umschlag: 1,9 Yuan, Restbetrag: 0,62 Yuan

Der dritte rote Umschlag: 0,49 Yuan, Restbetrag: 0,13 Yuan

Der 4. rote Umschlag: 0,04 Yuan, Restbetrag: 0,09 Yuan
Der 5. rote Umschlag: 0,03 Yuan, Restbetrag: 0,06 YuanDer 6. rote Umschlag: 0,03 Yuan, Restbetrag: 0,03 Yuan 7 rote Umschläge: 0,01 Yuan, Restbetrag: 0,02 Yuan
Der 8. rote Umschlag: 0,02 Yuan, Restbetrag: 0 Yuan



Verbessern Sie ihn und verwenden Sie den Durchschnitt als zufällige Sicherheitsobergrenze Kontrolle der Schwankungsdifferenz
PHP-Code

header("Content-Type: text/html;charset=utf-8");//输出不乱码,你懂的 
$total=10;//红包总额 
$num=8;// 分成8个红包,支持8人随机领取 
$min=0.01;//每个人最少能收到0.01元 
 
for ($i=1;$i<$num;$i++) 
{ 
 $safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限 
 $money=mt_rand($min*100,$safe_total*100)/100; 
 $total=$total-$money; 
 echo &#39;第&#39;.$i.&#39;个红包:&#39;.$money.&#39; 元,余额:&#39;.$total.&#39; 元 <br/>&#39;; 
} 
echo &#39;第&#39;.$num.&#39;个红包:&#39;.$total.&#39; 元,余额:0 元&#39;;
Das Ausgabeergebnis ist im Bild unten dargestellt

Der erste rote Umschlag: 0,06 Yuan, Restbetrag: 9,94 Yuan
Der zweite roter Umschlag: 1,55 Yuan, Restbetrag: 8,39 Yuan

Der 3. rote Umschlag: 0,25 Yuan, Restbetrag: 8,14 Yuan

Der 4. rote Umschlag: 0,98 Yuan, Restbetrag: 7,16 Yuan
Der 5. rote Umschlag: 1,88 Yuan , Restbetrag: 5,28 Yuan Der 6. rote Umschlag: 1,92 Yuan, Restbetrag: 3,36 YuanDer 7. rote Umschlag: 2,98 Yuan, Restbetrag: 0,38 Yuan
Der 8. rote Umschlag: 0,38 Yuan, Restbetrag: 0 Yuan



Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP implementiert die Alipay-Sofortzahlungsfunktion

Beispiele für die PHP-Konformität mit PSR-Programmierungsstandards

PHP implementiert die Sofortzahlungsfunktion von Alipay

Das obige ist der detaillierte Inhalt vonAlgorithmus zur Implementierung roter WeChat-Umschläge basierend auf PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn