一个简单的抽奖概率函数

一个简单的抽奖概率函数


摘要:该函数主要是判断产生的随机数所在的概率范围...

一个简单的抽奖概率函数:


/**
 * 简单的抽奖概率函数
 * @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);


你可能感兴趣的:(一个简单的抽奖概率函数)