抽奖概率 php_php抽奖概率算法
/*
*算法學習自百度.只是學習和記錄
*/
header("Content-type:text/html;charset=utf-8");
//1.設置獎項,id是獎項id,name是中獎名稱,v是中獎概率
$arr?=?array(
array('id'?=>?1,?'name'?=>?'特等獎',?'v'?=>?1),
array('id'?=>?2,?'name'?=>?'一等獎',?'v'?=>?10),
array('id'?=>?3,?'name'?=>?'二等獎',?'v'?=>?10),
array('id'?=>?4,?'name'?=>?'三等獎',?'v'?=>?10),
array('id'?=>?5,?'name'?=>?'四等獎',?'v'?=>?20),
array('id'?=>?6,?'name'?=>?'未中獎',?'v'?=>?50)
);
//2.計算改路綜合并抽獎
function?getrand($pro)?{
$result?=?array();
//循環獎項數組將原概率保存在新的數組
foreach?($pro?as?$key?=>?$value)?{
$arr[$key]?=?$value['v'];
}
asort($arr);
//計算概率總數
$prosum?=?array_sum($arr);
//從剛才創建的概率數組循環
foreach?($arr?as?$key?=>?$value)?{
$randNum?=?mt_rand(1,?$prosum);
//生成一個隨機數(1-總概率)
//當前用戶生成的隨機數小于或者等于就是中獎
if?($randNum?<=?$value)?{
$result?=?$pro[$key];
break;
}
//當前用戶生成的隨機數大于獎項的概率,這個獎項錯過.同時從總的概率中去除本獎項的概率
else?{
$prosum?-=?$value;
}
}
//返回中獎結果
return?$result;
}
//測試執行
$res?=?getrand($arr);
print_r($res);
?>
總結
以上是生活随笔為你收集整理的抽奖概率 php_php抽奖概率算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 九阳真经(1-5重)
- 下一篇: 动态规划算法php,php算法学习之动态