PHP+Ajax制作的一款幸运大转盘抽奖实例,通过奖品库存、中奖次数来计算中奖概率
奖品设置
$prizes = array( 0 => array( "id" => 0, //中奖id "name" => "谢谢参与", //奖品名称 "count" => "100", //库存 ), 1 => array( "id" => 1, "name" => "罗浮山门票", "count" => "40", ), 2 => array( "id" => 2, "name" => "罗浮山嘉宝田温泉体验券", "count" => "40", ), 3 => array( "id" => 3, "name" => "精美旅游书籍《山水酿惠州》", "count" => "40", ), 4 => array( "id" => 4, "name" => "碧海湾漂流门票", "count" => "40", ), 5 => array( "id" => 5, "name" => "南昆山门票", "count" => "40", ), 6 => array( "id" => 6, "name" => "云顶温泉精美礼品", "count" => "40", ), );
获取中奖概率,若是库存为0的则不计算
function getRand($proArr, $proCount) { $result = ''; $proSum = 0; foreach ($proCount as $key => $val) { if ($val <= 0) { continue; } else { $proSum = $proSum + $proArr[$key]; } } foreach ($proArr as $key => $proCur) { if ($proCount[$key] <= 0) { continue; } else { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } } unset($proArr); return $result; }