当前位置:首页 > 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: 算法 实例

分享到: