Heim > Artikel > Backend-Entwicklung > Algorithmus zur Implementierung roter WeChat-Umschläge basierend auf PHP
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 '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 <br/>'; } echo '第'.$num.'个红包:'.$total.' 元,余额:0 元';
Der erste rote Umschlag: 7,48 Yuan, Restbetrag: 2,52 Yuan
Der zweite rote Umschlag: 1,9 Yuan, Restbetrag: 0,62 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-Codeheader("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 '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 <br/>';
}
echo '第'.$num.'个红包:'.$total.' 元,余额:0 元';
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 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:
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!