ホームページ > バックエンド開発 > PHPチュートリアル > PHP はランダムにビジー効果を返します

PHP はランダムにビジー効果を返します

*文
リリース: 2023-03-18 16:46:01
オリジナル
1362 人が閲覧しました

この記事では主にPHPベースの商品の期間限定セールで忙しいふりをする効果について紹介します。お役に立てれば幸いです。

最近、セール商品を表示する機能に関するプロジェクトに取り組んでいます。たとえば、当社の Web サイトのトラフィックが多い場合、数秒以内に何千人ものユーザーが同時に商品をクリックすると、確かに「購入を急ぐ人が多すぎて、システムがビジー状態になっている」ように見えます。 "

しかし、ほとんどの Web サイトはそうではありません。それほど素晴らしいことではありません。ユーザーに商品の需要があると感じさせるには、常に「システムがビジーです」と表示して「忙しいふりをする」プログラムを作成する必要があります (タオバオを除いて、他のウェブサイトは本当に忙しいとは思わないでください、しかし、それらは意図的にそれをつかまなければ購入できないように感じさせます、ご理解ください)

この記事はルールを設定し、それを拡張することができます。私の考えによると

1. 製品購入リンクは誰でも利用できます

2. ユーザーに「列に並んでいる、商品が忙しい」という可能性を 70% 与えたいと考えています

この記事は php コードで実装されています。他の言語と同じように

まず、小学校で習った知識を使って考えてみましょう:

1. ボールが 10 個あり、赤いボールが 3 個、バスケットボールが 7 個あり、それらをランダムに混ぜて、その中に手を入れます。 、バスケットボールに触れる確率は何ですか? 以前、この条件を友人に見せたところ、次のような答えが返されました。 2 つの文

このアプローチは実際には非常に賢明です . しかし、この小さな友人は非常に重要な点を無視しました

2. 2 番目の人が接触してきた場合、ここで注意すべき点があります。その後、10 個のボールが埋まらなければなりません (まだ赤いボールが 3 個とバスケットボールが 7 個あります)

そして最も重要なことは、このようにして「ランダムかつカジュアルに」混ぜ続けることです。

上記のプログラムは明らかに無視しています: 最初の 3 つの赤と最後の 7 つの青に従って全員がボールに触れた場合、php の rand 関数は、そういえば、多くのマスターは、ベイジアン、行列などのさまざまな高度なアルゴリズムを考え出すでしょう。そのような電子商取引機能がそのような複雑な計算を必要とする場合、あなたの上司はあなたの支出に同意しないでしょう。この関数を完成させるにはとても時間がかかります

次に、PHP の単純な関数を使用して、バスケットボールに触れる確率をできるだけ 70% に近づけるアルゴリズムをリリースします。

ステップ 1:

$arr=array("赤","赤","赤","青","青","青","青","青","青",”青”); これは存在する必要があります。これらは初期化された 3 つの赤いボールと 7 つのバスケットボールです

第 2 ステップ: ランダムとランダムの混合

上記の配列には 10 個の要素があり、2 つのランダムなボールを交換できます。交換回数を決めることができます。 まず、スワップ関数を書きます(この関数を理解していない場合は、基本を学ぶ必要があります)


     $arr=array(“red”,”red”,”red”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”);
     echo $arr[rand(0,9)];
ログイン後にコピー


この関数は、2つの乱数を入力することで実装されます。そして配列内のシーケンス番号を交換します。

ステップ 3: 交換アルゴリズムを最適化します。

上記の交換関数と入力されたランダムパラメータにより、赤いボールと赤いボール、またはバスケットボールとバスケットボールが交換されます。ただし、「本当の」混合は達成されません

そこで、すべての交換が赤いボールとバスケットボールのランダムな交換であることを保証するための補足関数を作成する必要があります

function swap($i,$j,$arr)
  {
    $tmp=$arr[$i];
    $arr[$i]=$arr[$j];
    $arr[$j]=$tmp;
    return $arr;
  }
ログイン後にコピー

この関数の機能は次のとおりです。 10 個のボールの中から赤いボールまたはバスケットボールを見つけて、現在のシリアル番号を取り出し、rand 関数を使用してバスケットボールまたは赤いボールのシリアル番号をランダムに選択します。

こちらをご覧ください:


 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)];
  }
ログイン後にコピー

ステップ 4: さらに重要です。

ランダムにランダムに混ぜ始めます


    $i=getRange($arr,”red”);  //这样可以取出随机一个红球的序号
   $j=getRange($arr,”blue”); //这样可以取出随机一个篮球的序号
ログイン後にコピー

ここで注意すべき点は、 $num<10 ということです。私の代わりに10回混ぜます。 大きな手で袋を10回かき混ぜるのに相当します。 理論的には、かき混ぜればかき混ぜるほど、ランダム性が強くなります。ここでは実際には10回で十分です。

4番目のステップが完了すると出てくる$arrは、赤いボールとバスケットボールを混ぜたものです。


ステップ 5: rand 関数を再度呼び出します


 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/>”; //这个语句可以看一下输出,混合过后的排列,是否每次都不一样
     }
ログイン後にコピー
内容が青の場合は、直接終了します (「忙しいので、気にしないでください」)

内容が赤の場合は、プログラムに実行を継続させます。購入手続き。

関連するおすすめ:

phpはイベント候補抽選機能コードを実装

phpは簡単な権限管理を実装

php抽選アプレット

以上がPHP はランダムにビジー効果を返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート