當前位置:首頁 > PHP教程 > php應用 > 列表

php簡單中獎算法(實例)

發布:smiling 來源: PHP粉絲網  添加日期:2018-08-31 10:17:02 瀏覽: 評論:0 

今天遇到這樣的一個問題  封裝一個 抽獎概率函數 思前想后去網上找點資料吧,而且不止一種方法 這種我感覺還是比較容易的 還是那句話 實現功能的思路不止一種 代碼也不止一種。

  1. functionget_rand($proArr) { 
  2.    $result=''
  3.     
  4.    //概率數組的總概率精度 
  5.    $proSum=array_sum($proArr); 
  6.     
  7.    //概率數組循環 
  8.    foreach($proArras$key=>$proCur) { 
  9.      $randNum= mt_rand(1,$proSum); 
  10.  if($randNum<=$proCur) { 
  11.    $result=$key
  12.    break
  13.  }else
  14.    $proSum-=$proCur
  15.  } 
  16. unset ($proArr); 
  17. return$result
  18.    
  19.    
  20. $prize_arr=array
  21. '0'=>array('id'=>1,'prize'=>'平板電腦','v'=>0.1), 
  22. '1'=>array('id'=>2,'prize'=>'數碼相機','v'=>5), 
  23. '2'=>array('id'=>3,'prize'=>'音箱設備','v'=>10), 
  24. '3'=>array('id'=>4,'prize'=>'4G優盤','v'=>12), 
  25. '4'=>array('id'=>5,'prize'=>'10Q幣','v'=>22), 
  26. '5'=>array('id'=>6,'prize'=>'下次沒準就能中哦','v'=>50), 
  27. ); 
  28.    
  29.    
  30. foreach($prize_arras$key=>$val) { 
  31. $arr[$val['id']] =$val['v']; 
  32. $rid= get_rand($arr);//根據概率獲取獎項id 
  33. $res['yes'] =$prize_arr[$rid-1]['prize'];//中獎項 
  34. unset($prize_arr[$rid-1]);//將中獎項從數組中剔除,剩下未中獎項 
  35. shuffle($prize_arr);//打亂數組順序 
  36. for($i=0;$i<count($prize_arr);$i++){ 
  37. $pr[] =$prize_arr[$i]['prize']; 
  38. $res['no'] =$pr
  39. echojson_encode($res,JSON_UNESCAPED_UNICODE); 

Tags: 算法 實例

分享到:

广西快3最大遗漏值统计表