不同的奖品具有不同的中奖概率。
/* * 奖项数组 * 奖品id,名称,v表示中奖概率 */ $proArr = array( array(‘id‘=>1,‘name‘=>‘特等奖‘,‘v‘=>1), array(‘id‘=>2,‘name‘=>‘一等奖‘,‘v‘=>5), array(‘id‘=>3,‘name‘=>‘二等奖‘,‘v‘=>10), array(‘id‘=>4,‘name‘=>‘三等奖‘,‘v‘=>12), array(‘id‘=>5,‘name‘=>‘四等奖‘,‘v‘=>22), array(‘id‘=>6,‘name‘=>‘没中奖‘,‘v‘=>50) );
抽奖代码
/* * 使用较多的为这个方法 */ function get_rand($proArr){ $result = array(); foreach($proArr as $key => $val){ $arr[$key]= $val[‘v‘]; } // 概率数组的总概率 $proSum = array_sum($arr); asort($arr); //键值升序排列数组 // 概率数组循环 foreach($arr as $k => $v){ $randNum = mt_rand(1, $proSum); if($randNum <= $v){ $result = $proArr[$k]; break; }else{ $proSum -= $v; } } return $result; }
原文地址:https://www.cnblogs.com/php99/p/19d9a95580eb33a4525d49a406bf144e.html
时间: 2024-10-20 03:53:54