1. 程式人生 > 其它 >php 實現抽獎功能

php 實現抽獎功能

技術標籤:laravel

最近做的小程式有一個抽獎功能,這裡記錄下實現抽獎功能的具體流程

前提:

有一組獎品資料如下

id獎品(prize)概率(rate)數量(num)已抽數量(prize_num)
1一等獎10%100
2二等獎15%200
3三等獎35%500

根據如上實現抽獎如下($prizes表示上面表格資料)

public function promise()
	{
		$prizes = [
			[
				'id' => 1,
				'prize' => '一等獎',
				'rate' => '0.1',
				'num' => '10',
				'prize_num'
=> '0', ], [ 'id' => 2, 'prize' => '二等獎', 'rate' => '0.15', 'num' => '20', 'prize_num' => '0', ], [ 'id' => 3, 'prize' => '三等獎', 'rate' => '0.3', 'num' => '50', 'prize_num' => '0', ], ]; //進行抽獎 $data = []; foreach
($prizes as $prize) { if (($prize['num'] - $prize['prize_num']) > 0) { $data[$prize['id']] = 100 * ($prize['rate']); } }; //獲取所有獎品的總概率 $sum = array_sum($data); $countSum = 100; if ($sum < $countSum) { $data[0] = $countSum - $sum;//不滿100%,表示沒有抽取到獎品 } $result = 0; //概率陣列總精度
//概率陣列迴圈 foreach ($data as $key => $value) { $randNum = mt_rand(1, $countSum); if ($randNum <= $value) { $result = $key; break; } else { $countSum -= $value; } } unset($arr); echo $result;//抽到的ID值,0表示沒有抽到獎品 }

根據如上就可以實現抽獎功能

在這裡插入圖片描述