一个简单的抽奖概率函数
摘要:该函数主要是判断产生的随机数所在的概率范围...
一个简单的抽奖概率函数:
/** * 简单的抽奖概率函数 * @param array $rewardArray 概率,如:$rewardArray = array(10, 20, 20, 30, 10, 10),对应各奖品的概率 * @return int 概率数组的下标 */ function luckDraw($rewardArray) { $sum = array_sum($rewardArray); if($sum !== 100) { return ‘Error:The sum of values in $rewardArray Must be equal to 100!‘; } //获取随机数 $rewardNum = mt_rand(0, $sum - 1); $totalnum = count($rewardArray); for($i = 0; $i < $totalnum; $i++) { if($i == 0) { if($rewardArray[$i] > $rewardNum && $rewardNum >= 0) { return $i; } } else { $max = $min = 0; for($j = 0; $j <= $i; $j++) { $max = $max + $rewardArray[$j]; } for($k = 0; $k < $i; $k++) { $min = $min + $rewardArray[$k]; } if($max > $rewardNum && $rewardNum >= $min) { return $i; } } } }
该函数主要是判断产生的随机数所在的概率范围。
示例:
$rewardArray = array(10, 20, 20, 30, 10, 10); //各概率对应值范围 //10,:0-10 //20:10-30 //20:30-50 //30:50-80 //10:80-90 //10:90-100 echo luckDraw($rewardArray);
时间: 2024-09-29 13:04:50