小程序九宮格抽獎(jiǎng)+中獎(jiǎng)概率

首先上圖



首先就是頁面初始數(shù)據(jù)渲染:


頁面大體就是這些,接口獲取獎(jiǎng)項(xiàng)列表,然后訪問后端計(jì)算概率接口獲取到獎(jiǎng)項(xiàng)位置,然后返回給小程序端,小程序端有了這個(gè)位置不管轉(zhuǎn)動(dòng)多少圈最終中獎(jiǎng)位置都是這里。

接下來后端代碼:

//根據(jù)概率獲取獎(jiǎng)項(xiàng)位置

public function get_draw(){

? $url="draw/prize_list";//獎(jiǎng)項(xiàng)列表api接口

? ? $data['type_name'] = '九宮格抽獎(jiǎng)';

? $data['shop_id'] = input('shop_id');

? $data['order_id'] = input('order_id');

? ? $res= getData($url,$data);

? ? if ($res['code']==1) {

? ? $prize_arr=$res['data']['draw_list'];

? ? }else{

? ? $prize_arr='';

? ? }


? ? ? foreach ($prize_arr as $k=>$v) {

? ? $arr[$v['id']] = $v['probability'];//這里是設(shè)定的概率值 值越高 中獎(jiǎng)幾率越大(0-100)

}

? ? ? $prize_id = $this->getRand($arr); //根據(jù)概率獲取獎(jiǎng)項(xiàng)id

? ? ? foreach($prize_arr as $k=>$v){ //獲取前端獎(jiǎng)項(xiàng)位置

? ? ? ? ? if($v['id'] == $prize_id){

? ? ? ? ? $prize_site = $k;

? ? ? ? ? break;

? ? ? ? ? }

? ? ? }

? ? ? $res = $prize_arr[$prize_id - 1]; //中獎(jiǎng)項(xiàng)

? ? ? $arr = array_map('array_shift',$prize_arr);


? ? ? $key = array_search($prize_id,$arr);

? ? ? $data=[

? ? ? ? 'prize_id'=>$res['id'],

? ? ? ? 'id'=>$key,

? ? ? ? 'type'=>$res['type'],

? ? ? ? 'image_url'=>$res['image_url'],


? ? ? ? ];

? ? ? ? return json($data);

? ? }


? ? /**

? ? * 根據(jù)概率獲取獎(jiǎng)項(xiàng)

? ? * @param unknown $proArr

? ? * @return Ambigous <string, unknown>

? ? */

? ? function getRand($proArr)

? ? {

? ? ? ? $result = '';

? ? ? ? //概率數(shù)組的總概率精度

? ? ? ? $proSum = array_sum($proArr);

? ? ? ? //概率數(shù)組循環(huán)

? ? ? ? foreach ($proArr as $key => $proCur) {

? ? ? ? ? ? $randNum = mt_rand(1, $proSum);

? ? ? ? ? ? if ($randNum <= $proCur) {

? ? ? ? ? ? ? ? $result = $key;

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? $proSum -= $proCur;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? unset ($proArr);

? ? ? ? return $result;

? ? }

這里計(jì)算出中獎(jiǎng)項(xiàng)返回給小程序端就ok了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容