php簡單中獎算法(實(shí)例)
今天遇到這樣的一個(gè)問題 封裝一個(gè) 抽獎概率函數(shù) 思前想后去網(wǎng)上找點(diǎn)資料吧,而且不止一種方法 這種我感覺還是比較容易的 還是那句話 實(shí)現(xiàn)功能的思路不止一種 代碼也不止一種。
function get_rand($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; } $prize_arr = array( '0' => array('id'=>1,'prize'=>'平板電腦','v'=>0.1), '1' => array('id'=>2,'prize'=>'數(shù)碼相機(jī)','v'=>5), '2' => array('id'=>3,'prize'=>'音箱設(shè)備','v'=>10), '3' => array('id'=>4,'prize'=>'4G優(yōu)盤','v'=>12), '4' => array('id'=>5,'prize'=>'10Q幣','v'=>22), '5' => array('id'=>6,'prize'=>'下次沒準(zhǔn)就能中哦','v'=>50), ); foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v']; } $rid = get_rand($arr); //根據(jù)概率獲取獎項(xiàng)id $res['yes'] = $prize_arr[$rid-1]['prize']; //中獎項(xiàng) unset($prize_arr[$rid-1]); //將中獎項(xiàng)從數(shù)組中剔除,剩下未中獎項(xiàng) shuffle($prize_arr); //打亂數(shù)組順序 for($i=0;$i<count($prize_arr);$i++){ $pr[] = $prize_arr[$i]['prize']; } $res['no'] = $pr; echo json_encode($res,JSON_UNESCAPED_UNICODE);
以上這篇php簡單中獎算法(實(shí)例)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHPStorm 2020.1 調(diào)試 Nodejs的多種方法詳解
這篇文章主要介紹了PHPSTORM 2020.1 調(diào)試 Nodejs的多種方法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09支付寶接口開發(fā)集成支付環(huán)境小結(jié)
本文主要給大家分享的是在做支付寶接口開發(fā)集成支付環(huán)境的全過程,非常的詳細(xì),搭配示例代碼,是篇非常不錯的文章,這里推薦給大家,有需要的小伙伴參考下。2015-03-03thinkPHP內(nèi)置字符串截取函數(shù)用法詳解
這篇文章主要介紹了thinkPHP內(nèi)置字符串截取函數(shù)用法,結(jié)合實(shí)例形式分析了thinkPHP內(nèi)置的字符串截取函數(shù)功能與具體使用方法,以及針對無法添加省略號的源碼修改技巧,需要的朋友可以參考下2016-11-11Laravel框架實(shí)現(xiàn)即點(diǎn)即改功能的方法分析
這篇文章主要介紹了Laravel框架實(shí)現(xiàn)即點(diǎn)即改功能的方法,結(jié)合具體實(shí)例形式分析了Laravel框架即點(diǎn)即改功能的實(shí)現(xiàn)原理、步驟及相關(guān)操作技巧,需要的朋友可以參考下2019-10-10php版微信公眾平臺開發(fā)之驗(yàn)證步驟實(shí)例詳解
這篇文章主要介紹了php版微信公眾平臺開發(fā)之驗(yàn)證步驟,結(jié)合實(shí)例形式詳細(xì)分析了php微信公眾平臺驗(yàn)證的操作步驟與相關(guān)參數(shù)含義,需要的朋友可以參考下2016-09-09CodeIgniter自定義控制器MY_Controller用法分析
這篇文章主要介紹了CodeIgniter自定義控制器MY_Controller用法,結(jié)合實(shí)例形式分析了CodeIgniter自定義控制器MY_Controller的定義與使用技巧,需要的朋友可以參考下2016-01-01laravel 查詢數(shù)據(jù)庫獲取結(jié)果實(shí)現(xiàn)判斷是否為空
今天小編就為大家分享一篇laravel 查詢數(shù)據(jù)庫獲取結(jié)果實(shí)現(xiàn)判斷是否為空,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10