<?php
// 準(zhǔn)備獎品
// weight代表獎品權(quán)重 權(quán)重越大被抽到的可能性也就越大
// 可以在后臺進行設(shè)置
// 如果不希望該獎品被抽到 權(quán)重可以給設(shè)置成0
$rewardOptions = array(
array('id' => 1, 'name' => '橙武', 'weight' => 1),
array('id' => 2, 'name' => '紫武', 'weight' => 1),
array('id' => 3, 'name' => '藍武', 'weight' => 1),
array('id' => 4, 'name' => '綠武', 'weight' => 1),
array('id' => 5, 'name' => '白武', 'weight' => 1),
);
// 獲取抽到的獎品ID
$rewardId = getRewardId($rewardOptions);
// 得到獎品ID 進行相關(guān)業(yè)務(wù)操作
// .....
// 展示對應(yīng)的獎品
echo $rewardOptions[$rewardId - 1]['name'];
/**
* [getRewardId 抽獎方法(必定能抽中獎品)]
* 這個算法的核心點就在于看獲得的隨機數(shù)是否落在某個權(quán)重范圍區(qū)間
* 如果是則直接可以取出該獎品
* 如果不是則將總權(quán)重中去除本次循環(huán)的權(quán)重
* 總權(quán)重一次一次減小 最后一個總權(quán)重 必定等于最后一次循環(huán)的獎品權(quán)重
* 所以獲得的隨機數(shù)必定也在這個范圍內(nèi) 獎品必然會獲得
* @param [type] $arr [獎品數(shù)組]
* @param [type] $start [起始權(quán)重 可用來做貓膩
* 如果只想讓廉價的獎品被抽中 可以將該值設(shè)置為廉價商品的權(quán)重值]
* @return [type] $id [抽到的獎品]
*/
function getRewardId($arr, $start = 1) {
// 計算總權(quán)重
$totalWeight = array_sum(array_column($arr, 'weight'));
foreach($arr as $k => $v) {
// 獲取一個總權(quán)重內(nèi)的隨機數(shù)
$random = mt_rand($start, $totalWeight);
if($random <= $v['weight']) {
return $v['id'];
} else {
$totalWeight -= $v['weight'];
}
}
}
看完你就會的php抽獎小案例 還在等什么?
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 小米推送:https://dev.mi.com/doc/p=6421/ 華為推送:http://developer...