首页 > 开发 > PHP > 正文

php简单中奖算法(实例)

2024-05-04 22:01:17
字体:大 中 小
来源:转载
供稿:网友

今天遇到这样的一个问题  封装一个 抽奖概率函数 思前想后去网上找点资料吧,而且不止一种方法 这种我感觉还是比较容易的 还是那句话 实现功能的思路不止一种 代码也不止一种。

  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. } 
  17. unset ($proArr); 
  18. return$result; 
  19. } 
  20.    
  21.    
  22. $prize_arr=array( 
  23. '0'=>array('id'=>1,'prize'=>'平板电脑','v'=>0.1), 
  24. '1'=>array('id'=>2,'prize'=>'数码相机','v'=>5), 
  25. '2'=>array('id'=>3,'prize'=>'音箱设备','v'=>10), 
  26. '3'=>array('id'=>4,'prize'=>'4G优盘','v'=>12), 
  27. '4'=>array('id'=>5,'prize'=>'10Q币','v'=>22), 
  28. '5'=>array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50), 
  29. ); 
  30.    
  31.    
  32. foreach($prize_arras$key=>$val) { 
  33. $arr[$val['id']] =$val['v']; 
  34. } 
  35. $rid= get_rand($arr);//根据概率获取奖项id 
  36. $res['yes'] =$prize_arr[$rid-1]['prize'];//中奖项 
  37. unset($prize_arr[$rid-1]);//将中奖项从数组中剔除,剩下未中奖项 
  38. shuffle($prize_arr);//打乱数组顺序 
  39. for($i=0;$i<count($prize_arr);$i++){ 
  40. $pr[] =$prize_arr[$i]['prize']; 
  41. } 
  42. $res['no'] =$pr; 
  43. echojson_encode($res,JSON_UNESCAPED_UNICODE); 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表