Home  >  Article  >  Backend Development  >  PHP realizes the turntable lottery algorithm sharing php examples

PHP realizes the turntable lottery algorithm sharing php examples

jacklove
jackloveOriginal
2018-06-26 16:59:451948browse

This article mainly introduces the algorithm of realizing the big carousel lottery in PHP in detail. It has certain reference value. Interested friends can refer to it.

The example of this article is to share with you the implementation of the carousel lottery in PHP. The specific code of the algorithm is for your reference. The specific content is as follows

Process:

1. Assemble the award array

2. Calculate the probability

3. Return the winning situation

The code is as follows:

The winning probability ' v ' can be set in the background and passed to this method, NoteTransfer integer

function get_gift(){ 
    //拼装奖项数组 
    // 奖项id,奖品,概率
    $prize_arr = array(  
     '0' => array('id'=>1,'prize'=>'平板电脑','v'=>0),  
     '1' => array('id'=>2,'prize'=>'数码相机','v'=>0),  
     '2' => array('id'=>3,'prize'=>'音箱设备','v'=>0),  
     '3' => array('id'=>4,'prize'=>'4G优盘','v'=>5),  
     '4' => array('id'=>5,'prize'=>'10Q币','v'=>0),  
     '5' => array('id'=>6,'prize'=>'空奖','v'=>5),  
    );  
    foreach ($prize_arr as $key => $val) {  
     $arr[$val['id']] = $val['v'];//概率数组  
    }  
    $rid = $this->get_rand($arr); //根据概率获取奖项id  
    $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项  
    unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项  
    shuffle($prize_arr); //打乱数组顺序  
    for($i=0;$i<count($prize_arr);$i++){  
     $pr[] = $prize_arr[$i][&#39;prize&#39;]; //未中奖项数组 
    }  
    $res[&#39;no&#39;] = $pr; 
    // var_dump($res);

     
    if($res[&#39;yes&#39;]!=&#39;空奖&#39;){ 
      $result[&#39;status&#39;]=1; 
      $result[&#39;name&#39;]=$res[&#39;yes&#39;]; 
    }else{ 
      $result[&#39;status&#39;]=-1; 
      $result[&#39;msg&#39;]=$res[&#39;yes&#39;]; 
    }  
    //return $result; 
    var_dump($result);
  } 

  //计算中奖概率
  function get_rand($proArr) {  
   $result = &#39;&#39;;  
   //概率数组的总概率精度  
   $proSum = array_sum($proArr);  
   // var_dump($proSum);
   //概率数组循环  
   foreach ($proArr as $key => $proCur) {  
    $randNum = mt_rand(1, $proSum); //返回随机整数 

    if ($randNum <= $proCur) {  
     $result = $key;  
     break;  
    } else {  
     $proSum -= $proCur;  
    }  
   }  
   unset ($proArr);  
   return $result;  
  }

Rendering:

The above is the entire content of this article , I hope it will be helpful to everyone’s study, and I also hope everyone will support the php Chinese website.

Articles you may be interested in:

PHP uses curl_multi to implement concurrent requests Example PHP tips

PHP performance testing tool xhprof installation and use method detailed php skills

PHP implements the method of locating the cause of the fault through strace php skills

The above is the detailed content of PHP realizes the turntable lottery algorithm sharing php examples. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn