PHP控制转盘抽奖代码,PHP 根据概率 实现抽奖转盘算法 代码
最近實現大轉盤功能涉及到抽獎概率的算法問題,整理了一下相關代碼,歡迎大家參考哈~~~
思路:
1. 錄入中獎產品與中獎概率數據//?獎項id,獎品,概率
$prize_arr?=?array(
'0'?=>?array('id'=>1,'prize'=>'平板電腦','v'=>2),
'1'?=>?array('id'=>2,'prize'=>'數碼相機','v'=>5),
'2'?=>?array('id'=>3,'prize'=>'音箱設備','v'=>10),
'3'?=>?array('id'=>4,'prize'=>'4G優盤','v'=>15),
'4'?=>?array('id'=>5,'prize'=>'10Q幣','v'=>30),
'5'?=>?array('id'=>6,'prize'=>'空獎','v'=>5),
);
2. 計算中獎概率//計算中獎概率
function?get_rand($proArr)?{
$result?=?'';
//概率數組的總概率精度
$proSum?=?array_sum($proArr);
//概率數組循環
foreach?($proArr?as?$key?=>?$proCur)?{
//返回隨機整數
$randNum?=?mt_rand(1,?$proSum);
if?($randNum?<=?$proCur)?{
$result?=?$key;
break;
}?else?{
$proSum?-=?$proCur;
}
}
unset?($proArr);
return?$result;
}
3. 返回中獎信息function?get_prize($list?=?[]){
//拼裝獎項數組
$list_ids?=?array_column($list,?'id');
$list_vs?=?array_column($list,?'v');
//?ID?為鍵,概率為值
$arr?=?array_combine($list_ids,?$list_vs);
//根據概率獲取獎項id
$rid?=?get_rand($arr);
//中獎項數組
$res['yes']?=?$list[$rid-1];
//將中獎項從數組中剔除,剩下未中獎項
unset($list[$rid-1]);
//?重置索引
$pr?=?array_values($list);
//未中獎項數組
$res['no']?=?$pr;
//?返回中獎數據
$result?=?[
'msg'???=>?'抽獎成功~',
'code'??=>?0,
'data'??=>?$res['yes'],
];
return?$result;
}
函數調用方法:$result?=?get_prize($prize_arr);
echo?"
";print_r($result);
結果如下:
轉載請注明出處~~~~
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的PHP控制转盘抽奖代码,PHP 根据概率 实现抽奖转盘算法 代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php写新闻浏览历史,PHP实现浏览历史
- 下一篇: php basic publish,Ra