Heim  >  Artikel  >  Backend-Entwicklung  >  PHP gibt zufällig den Beschäftigt-Effekt zurück

PHP gibt zufällig den Beschäftigt-Effekt zurück

*文
*文Original
2017-12-27 15:40:221313Durchsuche

In diesem Artikel wird hauptsächlich der Effekt vorgestellt, der vorgibt, mit dem zeitlich begrenzten Verkauf von PHP-basierten Produkten beschäftigt zu sein. Ich hoffe, es hilft allen.

Kürzlich arbeite ich an einem Projekt über die Funktion der Präsentation von Rush-Sale-Produkten. Wenn unsere Website beispielsweise viel Verkehr hat und innerhalb weniger Sekunden Tausende von Benutzern gleichzeitig auf Ihr Produkt klicken, sieht es tatsächlich so aus, als ob „zu viele Leute zum Kauf eilen und das System ausgelastet ist“.

Aber, große. Allerdings sind einige Websites nicht so toll. Um den Benutzern das Gefühl zu geben, dass die Produkte sehr beliebt sind, müssen wir ein Programm erstellen, das „so tut, als wäre es beschäftigt“ (außer Taobao, nicht). (Ich glaube nicht, dass andere Websites wirklich beschäftigt sind.) Es ist sehr beschäftigt, aber sie geben Ihnen absichtlich das Gefühl, dass Sie es nicht kaufen können, ohne es zu ergreifen. Bitte haben Sie Verständnis.)

Dieser Artikel legt eine Regel fest, und Sie können es Erweitern Sie es nach meinen Vorstellungen.

1. Jeder kann auf den Produktkauflink klicken

2. Wir möchten den Benutzern eine 70-prozentige Chance geben, dass das Produkt in der Warteschlange steht "

Dieser Artikel verwendet PHP-Code, um ihn zu implementieren. Genauso wie andere Sprachen.

Lass uns zunächst mit dem Wissen, das wir in der Grundschule gelernt haben, darüber nachdenken:

1. Wenn es 10 Bälle gibt, sind 3 davon rot. Mischen Sie sie zufällig und lassen Sie Ihre Hand hinein. Mein Freund. Die Antwort war wie folgt:

Dann sagte er mir, dass er es in nur zwei Sätzen geschafft hat
     $arr=array(“red”,”red”,”red”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”);
     echo $arr[rand(0,9)];

Aber dieser kleine Kerl ist eigentlich ziemlich schlau Einen sehr wichtigen Punkt übersehen

2. Was ist, wenn die zweite Person zum Anfassen kommt? Hier gibt es einen Punkt zu beachten: Wenn die zweite Person zum Anfassen kommt, müssen die 10 Bälle aufgefüllt werden (immer noch 3 7). rote Bälle, 7 Basketbälle)

Und das Wichtigste ist, weiterhin „zufällig und zufällig“ zu mischen. Auf diese Weise beträgt die Wahrscheinlichkeit, dass die zweite Person den Basketball berührt, immer noch 70 %

Das obige Programm ignoriert offensichtlich: Wenn jeder den Ball gemäß den ersten drei roten und den letzten sieben blauen berührt, kann die Rand-Funktion den Basketball nicht garantieren

Wenn es darum geht, werden viele Experten verschiedene fortschrittliche Algorithmen wie Bayesian und Matrix entwickeln. Wenn eine solche E-Commerce-Funktion solch komplexe Vorgänge erfordert, wird Ihr Chef meiner Meinung nach nicht damit einverstanden sein, dass Sie so viel Zeit investieren um diese Funktion zu vervollständigen.

Als nächstes werde ich einen einfachen, aber genauen Algorithmus veröffentlichen. Unser Ziel ist es, die Wahrscheinlichkeit, einen Basketball zu berühren, so nahe wie möglich zu halten

Schritt 1:

$arr=array("red","red","red". ,"blue","blue","blue","blue","blue", „blau“, „blau“); Sie müssen dieses Ding haben, das sind die drei roten Bälle und 7 Basketbälle, die initialisiert werden

Schritt 2: Nach dem Zufallsprinzip mischen.

Das obige Array hat 10 Elemente. Sie können entscheiden, wie oft ausgetauscht werden soll.

Schreiben Sie zunächst eine Swap-Funktion (. Wenn Sie diese Funktion nicht verstehen, müssen Sie die Grundlagen erlernen)




function swap($i,$j,$arr)
  {
    $tmp=$arr[$i];
    $arr[$i]=$arr[$j];
    $arr[$j]=$tmp;
    return $arr;
  }
Um diese Funktion zu implementieren , I Geben Sie zwei zufällige Seriennummern ein, um die Werte auszutauschen, die mit den Seriennummern im Array übereinstimmen.


Schritt 3: Optimieren Sie den Austauschalgorithmus.

Aufgrund der oben genannten Austauschfunktion und der eingegebenen Zufallsparameter werden rote Bälle gegen rote Bälle oder Basketbälle gegen Basketbälle ausgetauscht. Dann wird jedoch keine „echte“ Vermischung erreicht Wir müssen also eine Zusatzfunktion schreiben, um sicherzustellen, dass jeder Austausch ein zufälliger Austausch von roten Bällen und Basketbällen sein muss


 function getRange($arr,$v)
  {
    $ret=array();
    for($i=0;$i<count($arr);$i++)
    {
      if($arr[$i]==$v)
      {
         $ret[]=$i;
      }
    }
     return $ret[rand(0,count($ret)-1)];
  }
Die Funktion dieser Funktion besteht darin, den roten Ball oder Basketball unter den 10 Bällen zu finden, dann ihre aktuellen Seriennummern herauszunehmen und dann die Rand-Funktion zu verwenden Wählen Sie zufällig einen Basketball oder die Seriennummer des roten Balls aus.


Schauen Sie bitte hier nach:


Schritt 4: Wichtiger.

    $i=getRange($arr,”red”);  //这样可以取出随机一个红球的序号
   $j=getRange($arr,”blue”); //这样可以取出随机一个篮球的序号

Beginnen Sie mit dem Mischen nach dem Zufallsprinzip


 for($num=0;$num<10;$num++)
     {
       
       $i=getRange($arr,”red”);  
             $j=getRange($arr,”blue”); 
       
       $arr=swap($i,$j,$arr);
      
      // echo implode(“,”, $arr).”|”.$i.”|”.$j.”<br/>”; //这个语句可以看一下输出,混合过后的排列,是否每次都不一样
     }
Das Wichtigste hier ist, $ Anzahl<10 . 10 Mal in meinem Namen mischen. Das entspricht dem zehnmaligen Umrühren des Beutels mit seinen großen Händen. Theoretisch ist die Zufälligkeit umso stärker, je mehr man rührt. Tatsächlich reicht hier das 10-fache aus.


Das $arr, das nach Abschluss des vierten Schritts herauskommt, ist die Mischung aus rotem Ball und Basketball.

Schritt 5: Rufen Sie die Rand-Funktion erneut auf

Wenn der Inhalt blau ist, verlassen Sie ihn direkt („Ich bin beschäftigt, keine Sorge“) Wenn es rot ist, lassen Sie das Programm den Kaufvorgang weiter ausführen.

 echo $arr[rand(0,9)];


Verwandte Empfehlungen:

PHP implementiert den Funktionscode für die Event-Kandidatenlotterie

PHP implementiert eine einfache Berechtigungsverwaltung

PHP-Lotterie-Applet

Das obige ist der detaillierte Inhalt vonPHP gibt zufällig den Beschäftigt-Effekt zurück. 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