20,359
社区成员
发帖
与我相关
我的任务
分享
/**
* 根据概率获取中奖号码
*/
static public function get_rand() {
$arr = array(
array('id'=>1,'name'=>'t等奖','v'=>1),//特等奖
array('id'=>2,'name'=>'1等奖','v'=>5),//1等奖
array('id'=>3,'name'=>'2等奖','v'=>10),//2等奖
array('id'=>4,'name'=>'3等奖','v'=>12),//3等奖
array('id'=>5,'name'=>'4等奖','v'=>23),//4等奖
array('id'=>6,'name'=>'5等奖','v'=>59),//5等奖
array('id'=>7,'name'=>'6等奖','v'=>80),//6等奖
array('id'=>8,'name'=>'7等奖','v'=>100)//7等奖
);
return self::get_rand1($arr);
}
static function get_rand1($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;
}
自己找到了 有需要的朋友可以用用 ,数组里面的v是控制概率的