Maison > Article > développement back-end > PHP renvoie un effet occupé de manière aléatoire
Cet article présente principalement l'effet de faire semblant d'être occupé avec des ventes à durée limitée de produits basés sur PHP. J'espère que cela aide tout le monde.
Récemment, je travaille sur un projet qui concerne la fonction d'affichage de produits en vente urgente. Par exemple, si notre site Web a beaucoup de trafic, si des milliers d'utilisateurs cliquent sur votre produit en même temps en quelques secondes, il apparaîtra en effet qu'« il y a trop de gens qui se précipitent pour acheter, et le système est occupé ».
Mais, gros Cependant, certains sites Web ne sont pas si géniaux. Afin de faire sentir aux utilisateurs que les produits sont très populaires, nous devons créer un programme pour "faire semblant d'être occupé" (sauf Taobao, ne le faites pas). Je ne pense pas que d'autres sites Web soient vraiment occupés). C'est très occupé, mais ils vous font délibérément sentir que vous ne pouvez pas l'acheter sans l'attraper, s'il vous plaît, comprenez)
Cet article établira une règle, et vous pourrez le faire. développez-le selon mes idées.
1. Tout le monde peut cliquer sur le lien d'achat du produit
2. Nous voulons donner aux utilisateurs 70% de chances de "faire la queue, le produit est occupé". "
Cet article Utiliser le code PHP pour l'implémenter. Comme dans les autres langages.
Tout d'abord, réfléchissons-y en utilisant les connaissances que nous avons apprises à l'école primaire :
1. S'il y a 10 balles, 3 d'entre elles sont rouges. Mettez un ballon de basket dans le sac. Mélangez-le au hasard et laissez-vous mettre la main dedans. Quelle est la probabilité de toucher le ballon de basket ? J'ai déjà fait cette demande à quelqu'un. mon ami. La réponse qu'il a donnée est la suivante :
Puis il m'a dit qu'il l'avait fait en seulement deux phrases$arr=array(“red”,”red”,”red”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”); echo $arr[rand(0,9)];
Mais ce petit gars est en fait assez intelligent. j'ai oublié un point très important
2. Et si la deuxième personne vient toucher ? Il y a un point à noter ici Si la deuxième personne vient toucher, alors il faut remplir les 10 boules (toujours 3 7). balles rouges, 7 ballons de basket)
Et le plus important est de continuer à mélanger "au hasard et avec désinvolture". De cette façon, la probabilité que la deuxième personne touche le ballon sera toujours de 70%
Le programme ci-dessus l'ignore évidemment : continuez à mélanger "au hasard et avec désinvolture" si tout le monde touche le ballon selon les trois premiers rouges et les sept derniers bleus, alors la fonction rand de PHP ne peut pas garantir le basket
.À ce propos, de nombreux experts proposeront divers algorithmes avancés, tels que le bayésien et la matrice. Si une telle fonction de commerce électronique nécessite des opérations aussi complexes, je pense que votre patron ne sera pas d'accord avec vous pour passer autant de temps. pour compléter cette fonction.
Ensuite, je publierai un algorithme simple mais précis. Notre objectif est d'utiliser PHP Une fonction simple pour maintenir la probabilité de toucher un ballon de basket aussi proche que possible de 70 %.
Étape 1 :
$arr=array("red","red","red". ,"blue","blue","blue","blue","blue", "blue","blue"); Vous devez avoir ce truc, ce sont les trois boules rouges et 7 ballons de basket qui sont initialisés
Étape 2 : Mélanger de manière aléatoire et aléatoire.
Le tableau ci-dessus comporte 10 éléments. Nous pouvons échanger deux balles aléatoires. Vous pouvez décider combien de fois échanger
Écrivez d'abord une fonction d'échange (. Si vous ne comprenez pas cette fonction, vous devez apprendre les bases)
function swap($i,$j,$arr) { $tmp=$arr[$i]; $arr[$i]=$arr[$j]; $arr[$j]=$tmp; return $arr; }
Pour mettre en œuvre cette fonction , je saisis deux numéros de série aléatoires pour échanger les valeurs correspondant aux numéros de série de ce tableau.
Étape 3 : Optimiser l'algorithme d'échange.
En raison de la fonction d'échange ci-dessus et des paramètres aléatoires d'entrée, les balles rouges sont échangées avec des balles rouges, ou les ballons de basket sont échangés avec des ballons de basket. Ensuite, cependant, le "vrai" mélange n'est pas obtenu
Nous devons donc écrire une fonction supplémentaire pour garantir que chaque échange doit être un échange aléatoire de ballons rouges et de ballons de basketfunction 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)]; }
La fonction de cette fonction est de trouver la balle rouge ou le ballon de basket parmi les 10 balles, puis de retirer leurs numéros de série actuels, puis d'utiliser la fonction rand pour choisissez au hasard un ballon de basket ou le numéro de série de la balle rouge.
$i=getRange($arr,”red”); //这样可以取出随机一个红球的序号 $j=getRange($arr,”blue”); //这样可以取出随机一个篮球的序号
Commencez à mélanger de manière aléatoire et aléatoire
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/>”; //这个语句可以看一下输出,混合过后的排列,是否每次都不一样 }
La chose importante à noter ici est, $ num<10 . Mélangez 10 fois en mon nom. Cela équivaut à utiliser vos grandes mains pour remuer le sac 10 fois. Théoriquement, plus vous remuez, plus le hasard est fort. En fait, 10 fois suffisent ici.
Étape 5 : Appelez à nouveau la fonction rand
Si le contenu est bleu, quittez directement ("Je suis occupé, ne vous embêtez pas")
S'il est rouge, laissez le programme continuer à exécuter le processus d'achat.echo $arr[rand(0,9)];
Recommandations associées :
php implémente le code de la fonction de loterie des candidats à l'événement
php implémente une gestion simple des autorisations
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!