抽奖概率 php_php抽奖概率算法
/*
*算法學(xué)習(xí)自百度.只是學(xué)習(xí)和記錄
*/
header("Content-type:text/html;charset=utf-8");
//1.設(shè)置獎(jiǎng)項(xiàng),id是獎(jiǎng)項(xiàng)id,name是中獎(jiǎng)名稱(chēng),v是中獎(jiǎng)概率
$arr?=?array(
array('id'?=>?1,?'name'?=>?'特等獎(jiǎng)',?'v'?=>?1),
array('id'?=>?2,?'name'?=>?'一等獎(jiǎng)',?'v'?=>?10),
array('id'?=>?3,?'name'?=>?'二等獎(jiǎng)',?'v'?=>?10),
array('id'?=>?4,?'name'?=>?'三等獎(jiǎng)',?'v'?=>?10),
array('id'?=>?5,?'name'?=>?'四等獎(jiǎng)',?'v'?=>?20),
array('id'?=>?6,?'name'?=>?'未中獎(jiǎng)',?'v'?=>?50)
);
//2.計(jì)算改路綜合并抽獎(jiǎng)
function?getrand($pro)?{
$result?=?array();
//循環(huán)獎(jiǎng)項(xiàng)數(shù)組將原概率保存在新的數(shù)組
foreach?($pro?as?$key?=>?$value)?{
$arr[$key]?=?$value['v'];
}
asort($arr);
//計(jì)算概率總數(shù)
$prosum?=?array_sum($arr);
//從剛才創(chuàng)建的概率數(shù)組循環(huán)
foreach?($arr?as?$key?=>?$value)?{
$randNum?=?mt_rand(1,?$prosum);
//生成一個(gè)隨機(jī)數(shù)(1-總概率)
//當(dāng)前用戶(hù)生成的隨機(jī)數(shù)小于或者等于就是中獎(jiǎng)
if?($randNum?<=?$value)?{
$result?=?$pro[$key];
break;
}
//當(dāng)前用戶(hù)生成的隨機(jī)數(shù)大于獎(jiǎng)項(xiàng)的概率,這個(gè)獎(jiǎng)項(xiàng)錯(cuò)過(guò).同時(shí)從總的概率中去除本獎(jiǎng)項(xiàng)的概率
else?{
$prosum?-=?$value;
}
}
//返回中獎(jiǎng)結(jié)果
return?$result;
}
//測(cè)試執(zhí)行
$res?=?getrand($arr);
print_r($res);
?>
總結(jié)
以上是生活随笔為你收集整理的抽奖概率 php_php抽奖概率算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 九阳真经(1-5重)
- 下一篇: DSPACE HIL 搭建过程浅析