php中獎演算法邏輯

來源:互聯網
上載者:User

標籤:res   包括   查看   src   分享   處理   後台   行業   pre   

最近公司有兩個活動, 一個是砸蛋活動, 另一個是轉盤活動。

後台這邊需要做介面進行對接,當使用者在前台點擊進行抽獎的時候,發送AJAX請求給後台,後台進行業務處理包括記錄使用者中獎資訊,然後返回json格式的資料給前台進行顯示 其中最為核心的就是中獎的演算法邏輯了。

在網上查看了一些演算法之後發現下面這種演算法效率比較高。

 1 <?php 2 //中獎獎品 3 $prize_arr = array( 4  5     0=>array( ‘id‘=>1,‘prize‘=>‘現金500W‘,‘v‘=>1 ), //機率為1/200 6     1=>array( ‘id‘=>2,‘prize‘=>‘iphone7‘,‘v‘=>5 ),   7     2=>array( ‘id‘=>3,‘prize‘=>‘耐克跑鞋‘,‘v‘=>10 ), 8     3=>array( ‘id‘=>4,‘prize‘=>‘魔聲耳機‘,‘v‘=>24 ), 9     4=>array( ‘id‘=>5,‘prize‘=>‘藍芽音響‘,‘v‘=>60 ),10     5=>array( ‘id‘=>6,‘prize‘=>‘現金1元‘,‘v‘=>100 )11 12     );13 14 15 /*16  * 對數組進行處理17  */18 19 foreach( $prize_arr as $k => $v ){20     //使用新數組item21     $item[$v[‘id‘]] = $v[‘v‘]; 22 }23 24 /*25  array(26         1 => 1,27         2 => 5,28         3 => 10,29         4 => 24,30         5 => 60,31         6 => 10032      );    33  */34 35 function get_rand($item){36 37     $num = array_sum($item);//計算出分母20038 39     foreach( $item as $k => $v ){40      41       $rand = mt_rand(1, $num);//機率區間(整數) 包括1和20042       /*43        *這個演算法很666 44        */45       if( $rand <= $v ){46           //迴圈遍曆,當下標$k = 1的時候,只有$rand = 1 才能中獎 47           $result = $k;48           echo $rand.‘--‘.$v;49           break;50       }else{51           //當下標$k=6的時候,如果$rand>100 必須$rand < = 100 才能中獎 ,那麼前面5次迴圈之後$rand的機率區間= 200-1-5-10-24-60 (1,100) 必中1塊錢52           $num-=$v;53           echo ‘*‘.$rand.‘*‘."&ensp;"."&ensp;"."&ensp;";54       }55     }56 57     return $result;58 }59 60 $res = get_rand($item);61 $prize = $prize_arr[$res-1][‘prize‘];62 echo $prize;

輸出得到:

 

迴圈遍曆,不停擷取隨機數並縮小機率空間,如果中一等獎只經過一層迴圈,機率越大的,經過迴圈的次數就越多有點像高中的機率的題目, 如果不中五等獎,那麼必中六等獎!

php中獎演算法邏輯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.