Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erklärung des PHP-Algorithmus für zufällige rote Umschläge

Detaillierte Erklärung des PHP-Algorithmus für zufällige rote Umschläge

墨辰丷
墨辰丷Original
2018-05-18 14:49:041745Durchsuche

In diesem Artikel wird hauptsächlich der in PHP implementierte Random-Red-Envelope-Algorithmus vorgestellt und die Prinzipien, Implementierungsmethoden und zugehörigen Vorsichtsmaßnahmen des PHP-Random-Red-Envelope-Algorithmus anhand von Beispielen analysiert

wie folgt:

1. Gesamtdesign

Es gibt viele Arten von Algorithmen, die Sie selbst auswählen können. Architektur" ist wie folgt: Verwenden Sie den Befehl redis decr( ), um den Strom zu begrenzen, verwenden Sie MySQL, um verschiedene erforderliche Daten aufzuzeichnen

2. Red-Envelope-Algorithmus

Der Einfachheit halber ist die Menge des roten Umschlags ein ganzzahliger Ausdruck, vorausgesetzt, dass jeder rote Umschlag *2 enthält. Es ist notwendig, jeder Person zu Beginn vorab eine Bohne zuzuweisen

function randBean($total_bean, $total_packet)
{
  $min_bean = 1;
  $max_bean = 5000;
  $range = 2;
  $total_bean = $total_bean - $total_packet * $min_bean; //每个人预留一个最小值
  $list = [];
  $min = 1;
  while(count($list) < $total_packet){
    $max = floor($total_bean / $total_packet) * $range;
    $bean = rand($min, $max);
    if ($bean <= $max_bean - 1) {
      $list[] = $bean;
      $total_bean -= $bean;
    }
  }
  $list[] = $total_bean;//剩余的金豆作为最后一个红包
  //合并
  foreach ($list as $k => $v) {
    $list[$k] += $min_bean;
  }
  return $list;
}


Mehrere Statistiken


Der zweite Typ, einfach erweitern, das Maximum Die Anzahl der einzelnen roten Umschläge beträgt: (verbleibende Menge/Anzahl der verbleibenden roten Umschläge)*3; es müssen jedoch jedes Mal mindestens 2 rote Umschläge versendet werden

Der dritte Typ , Zeile Segmentmethode, generiert zufällig einige Zahlen, teilt eine gerade Linie in mehrere Segmente und bestimmt die Länge jedes Segments (diese Schwankung ist relativ groß, nicht sehr durchschnittlich, wenn sie eingeschränkt wird). Die Größe jedes roten Umschlags wird problematischer sein)

function abc ($total_bean, $total_packet)
{
  $min = 1;
  $max = $total_bean -1;
  $list = [];
  $maxLength = $total_packet - 1;
  while(count($list) < $maxLength) {
    $rand = mt_rand($min, $max);
    empty($list[$rand]) && ($list[$rand] = $rand);
  }
  $list[0] = 0; //第一个
  $list[$total_bean] = $total_bean; //最后一个
  sort($list); //不再保留索引
  $beans = [];
  for ($j=1; $j<=$total_packet; $j++) {
    $beans[] = $list[$j] - $list[$j-1];
  }
  // return $beans;
  echo &#39;<pre class="brush:php;toolbar:false">&#39;; print_r($beans); echo array_sum($beans);
}
abc(100000, 3);


Der vierte Typ
:

Weil jede Person jedes Mal mindestens 1 Bohne hat Die Anzahl der Bohnen wird zufällig generiert, die verbleibende Anzahl von Personen * 1 Bohne muss reserviert werden. Nachdem diese erforderlichen verbleibenden Bohnennummern entfernt wurden, wird die verbleibende Bohnenanzahl verwendet. Der Durchschnittswert ist der Maximalwert, der zufällig generiert werden soll Anzahl der Bohnen dieses Mal

Verwandte Empfehlungen:

Zufälliger roter Umschlag

von PHP implementierter Algorithmus

So implementieren Sie feste rote Umschläge und
zufällige rote Umschläge

ausführliche Erklärung des Algorithmus in PHP (Bild)

PHP-Generierung
Zufälliger roter Umschlag

Algorithmus


Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des PHP-Algorithmus für zufällige rote Umschläge. 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