PHP renvoie un effet occupé de manière aléatoire

*文
Libérer: 2023-03-18 16:46:01
original
1329 Les gens l'ont consulté

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)];
Copier après la connexion

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;
  }
Copier après la connexion

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 basket


 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)];
  }
Copier après la connexion

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.

Veuillez jeter un œil ici :


Étape 4 : Plus important.
    $i=getRange($arr,”red”);  //这样可以取出随机一个红球的序号
   $j=getRange($arr,”blue”); //这样可以取出随机一个篮球的序号
Copier après la connexion

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/>”; //这个语句可以看一下输出,混合过后的排列,是否每次都不一样
     }
Copier après la connexion

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.

Le $arr qui sort une fois la quatrième étape terminée est le mélange de balle rouge et de basket-ball.

É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)];
Copier après la connexion



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

applet de loterie php

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal