PHP實現(xiàn)轉(zhuǎn)盤抽獎算法分享
本文實例為大家分享了PHP實現(xiàn)轉(zhuǎn)盤抽獎算法的具體代碼,供大家參考,具體內(nèi)容如下
流程:
1.拼裝獎項數(shù)組
2.計算概率
3.返回中獎情況
代碼如下:
中獎概率 ' v ' 可以在后臺設(shè)置,傳到此方法中,注意傳整數(shù)
function get_gift(){
//拼裝獎項數(shù)組
// 獎項id,獎品,概率
$prize_arr = array(
'0' => array('id'=>1,'prize'=>'平板電腦','v'=>0),
'1' => array('id'=>2,'prize'=>'數(shù)碼相機','v'=>0),
'2' => array('id'=>3,'prize'=>'音箱設(shè)備','v'=>0),
'3' => array('id'=>4,'prize'=>'4G優(yōu)盤','v'=>5),
'4' => array('id'=>5,'prize'=>'10Q幣','v'=>0),
'5' => array('id'=>6,'prize'=>'空獎','v'=>5),
);
foreach ($prize_arr as $key => $val) {
$arr[$val['id']] = $val['v'];//概率數(shù)組
}
$rid = $this->get_rand($arr); //根據(jù)概率獲取獎項id
$res['yes'] = $prize_arr[$rid-1]['prize']; //中獎項
unset($prize_arr[$rid-1]); //將中獎項從數(shù)組中剔除,剩下未中獎項
shuffle($prize_arr); //打亂數(shù)組順序
for($i=0;$i<count($prize_arr);$i++){
$pr[] = $prize_arr[$i]['prize']; //未中獎項數(shù)組
}
$res['no'] = $pr;
// var_dump($res);
if($res['yes']!='空獎'){
$result['status']=1;
$result['name']=$res['yes'];
}else{
$result['status']=-1;
$result['msg']=$res['yes'];
}
//return $result;
var_dump($result);
}
//計算中獎概率
function get_rand($proArr) {
$result = '';
//概率數(shù)組的總概率精度
$proSum = array_sum($proArr);
// var_dump($proSum);
//概率數(shù)組循環(huán)
foreach ($proArr as $key => $proCur) {
$randNum = mt_rand(1, $proSum); //返回隨機整數(shù)
if ($randNum <= $proCur) {
$result = $key;
break;
} else {
$proSum -= $proCur;
}
}
unset ($proArr);
return $result;
}
效果圖:


想要學(xué)習(xí)更多關(guān)于抽獎功能的實現(xiàn),請參考此專題:抽獎功能
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
php 數(shù)組處理函數(shù)extract詳解及實例代碼
php extract 函數(shù)使用數(shù)組鍵名作為變量名,使用數(shù)組鍵值作為變量值, 本函數(shù)可以處理表單提交并插入數(shù)據(jù)庫。文章向大家講解extract函數(shù)的基本使用方法及實例,需要的朋友可以參考下2016-11-11
DEDE實現(xiàn)轉(zhuǎn)跳屬性文檔在模板上調(diào)用出轉(zhuǎn)跳地址
這篇文章主要介紹了DEDE實現(xiàn)轉(zhuǎn)跳屬性文檔在模板上調(diào)用出轉(zhuǎn)跳地址,有需要的朋友可以參考一下。2016-11-11
淺談PHP array_search 和 in_array 函數(shù)效率問題
這篇文章主要介紹了淺談PHP array_search 和 in_array 函數(shù)效率問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Yii 2.0實現(xiàn)聯(lián)表查詢加搜索分頁的方法示例
這篇文章主要給大家介紹了關(guān)于利用Yii 2.0實現(xiàn)聯(lián)表查詢加搜索分頁的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
Yii2 rbac權(quán)限控制之菜單menu實例教程
這篇文章主要介紹了Yii2 rbac權(quán)限控制之菜單menu實例教程的相關(guān)資料,需要的朋友可以參考下2016-04-04

