PHP實(shí)現(xiàn)刮刮卡倒信,大轉(zhuǎn)盤(pán)抽獎(jiǎng)概率科贬,其實(shí)很容易!

/*

*?經(jīng)典的概率算法鳖悠,

*?$proArr是一個(gè)預(yù)先設(shè)置的數(shù)組榜掌,

*?假設(shè)數(shù)組為:array(100,200,300,400)乘综,

*?開(kāi)始是從1,1000?這個(gè)概率范圍內(nèi)篩選第一個(gè)數(shù)是否在他的出現(xiàn)概率范圍之內(nèi)憎账,

*?如果不在,則將概率空間卡辰,也就是k的值減去剛剛的那個(gè)數(shù)字的概率空間胞皱,

*?在本例當(dāng)中就是減去100,也就是說(shuō)第二個(gè)數(shù)是在1九妈,900這個(gè)范圍內(nèi)篩選的反砌。

*?這樣?篩選到最終,總會(huì)有一個(gè)數(shù)滿足要求萌朱。

*?就相當(dāng)于去一個(gè)箱子里摸東西宴树,

*?第一個(gè)不是,第二個(gè)不是晶疼,第三個(gè)還不是酒贬,那最后一個(gè)一定是又憨。

*?這個(gè)算法簡(jiǎn)單,而且效率非常高锭吨,

*?這個(gè)算法在大數(shù)據(jù)量的項(xiàng)目中效率非常棒竟块。

*/

functionget_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;?

}?



獎(jiǎng)項(xiàng)數(shù)組

這里的獎(jiǎng)項(xiàng)是一個(gè)二維數(shù)組,你可以自己組裝數(shù)據(jù)耐齐,也可以從后臺(tái)存儲(chǔ)數(shù)據(jù)到數(shù)據(jù)庫(kù)里,然后讀取出來(lái)蒋情,記得是一個(gè)二維數(shù)組的形式埠况。

/*

*?獎(jiǎng)項(xiàng)數(shù)組

*?是一個(gè)二維數(shù)組,記錄了所有本次抽獎(jiǎng)的獎(jiǎng)項(xiàng)信息棵癣,

*?其中id表示中獎(jiǎng)等級(jí)辕翰,prize表示獎(jiǎng)品,v表示中獎(jiǎng)概率狈谊。

*?注意其中的v必須為整數(shù)喜命,你可以將對(duì)應(yīng)的?獎(jiǎng)項(xiàng)的v設(shè)置成0,即意味著該獎(jiǎng)項(xiàng)抽中的幾率是0河劝,

*?數(shù)組中v的總和(基數(shù))壁榕,基數(shù)越大越能體現(xiàn)概率的準(zhǔn)確性。

*?本例中v的總和為100赎瞎,那么平板電腦對(duì)應(yīng)的?中獎(jiǎng)概率就是1%牌里,

*?如果v的總和是10000,那中獎(jiǎng)概率就是萬(wàn)分之一了务甥。

*

*/

$prize_arr?=?array(?

??'0'?=>?array('id'=>1,'prize'=>'一等獎(jiǎng)','v'=>1),?

??'1'?=>?array('id'=>2,'prize'=>'二等獎(jiǎng)','v'=>5),?

??'2'?=>?array('id'=>3,'prize'=>'三等獎(jiǎng)','v'=>10),?

??'3'?=>?array('id'=>4,'prize'=>'四等獎(jiǎng)','v'=>12),?

??'4'?=>?array('id'=>5,'prize'=>'五等獎(jiǎng)','v'=>22),?

??'5'?=>?array('id'=>6,'prize'=>'下次沒(méi)準(zhǔn)就能中哦','v'=>50),?

);?



前端請(qǐng)求數(shù)據(jù)

每次前端請(qǐng)求數(shù)據(jù)牡辽,比如刮刮卡,轉(zhuǎn)動(dòng)轉(zhuǎn)盤(pán)敞临,就循環(huán)傳輸獎(jiǎng)項(xiàng)态辛。

/*

*?每次前端頁(yè)面的請(qǐng)求,PHP循環(huán)獎(jiǎng)項(xiàng)設(shè)置數(shù)組挺尿,

*?通過(guò)概率計(jì)算函數(shù)get_rand獲取抽中的獎(jiǎng)項(xiàng)id奏黑。

*?將中獎(jiǎng)獎(jiǎng)品保存在數(shù)組$res['yes']中,

*?而剩下的未中獎(jiǎng)的信息保存在$res['no']中票髓,

*?最后輸出json個(gè)數(shù)數(shù)據(jù)給前端頁(yè)面攀涵。

*/

foreach?($prize_arr?as?$key?=>?$val)?{?

??$arr[$val['id']]?=?$val['v'];?

}?

$rid?=?get_rand($arr);?//根據(jù)概率獲取獎(jiǎng)項(xiàng)id?

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

unset($prize_arr[$rid-1]);?//將中獎(jiǎng)項(xiàng)從數(shù)組中剔除,剩下未中獎(jiǎng)項(xiàng)?

shuffle($prize_arr);?//打亂數(shù)組順序?

for($i=0;$i<count($prize_arr);$i++){?

??$pr[]?=?$prize_arr[$i]['prize'];?

}?

$res['no']?=?$pr;?

print_r($res);?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洽沟,一起剝皮案震驚了整個(gè)濱河市以故,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裆操,老刑警劉巖怒详,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炉媒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡昆烁,警方通過(guò)查閱死者的電腦和手機(jī)吊骤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)静尼,“玉大人白粉,你說(shuō)我怎么就攤上這事∈竺欤” “怎么了鸭巴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拦盹。 經(jīng)常有香客問(wèn)我鹃祖,道長(zhǎng),這世上最難降的妖魔是什么普舆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任恬口,我火速辦了婚禮,結(jié)果婚禮上沼侣,老公的妹妹穿的比我還像新娘祖能。我一直安慰自己,他們只是感情好华临,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布芯杀。 她就那樣靜靜地躺著,像睡著了一般雅潭。 火紅的嫁衣襯著肌膚如雪揭厚。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天扶供,我揣著相機(jī)與錄音筛圆,去河邊找鬼。 笑死椿浓,一個(gè)胖子當(dāng)著我的面吹牛太援,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扳碍,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼提岔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了笋敞?” 一聲冷哼從身側(cè)響起碱蒙,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后赛惩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哀墓,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年喷兼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了篮绰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡季惯,死狀恐怖吠各,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勉抓,我是刑警寧澤走孽,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站琳状,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盒齿。R本人自食惡果不足惜念逞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望边翁。 院中可真熱鬧翎承,春花似錦、人聲如沸符匾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)啊胶。三九已至甸各,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間焰坪,已是汗流浹背趣倾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留某饰,地道東北人儒恋。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像黔漂,于是被迫代替她去往敵國(guó)和親诫尽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 十八歲那年炬守,歸有光第一次提筆寫(xiě)《項(xiàng)脊軒志》牧嫉。五年后,他與母親生前選定的妻子魏氏成親劳较,一起住在項(xiàng)脊軒邊上的庭院中驹止。 ...
    阿游ayou閱讀 781評(píng)論 0 0
  • 我算是無(wú)戒訓(xùn)練營(yíng)里的差生 差在哪些方面呢 第一:底子薄浩聋,寫(xiě)作功底不好,基本的文學(xué)知識(shí)都不太清楚臊恋,進(jìn)簡(jiǎn)書(shū)時(shí)我全部的寫(xiě)...
    阿靜的空間閱讀 230評(píng)論 20 9
  • 年過(guò)三十放吩,沒(méi)有時(shí)間悲春傷秋常嘆女兒情長(zhǎng)智听,整日柴米醋油鹽茶,收納整理成專家渡紫。兒女成長(zhǎng)到推,不斷讀書(shū)看報(bào)思考教育良策,為此...
    敏感的刺猬閱讀 227評(píng)論 0 2
  • 把陽(yáng)光收集起來(lái)惕澎,待到寒冷時(shí)莉测,拿出來(lái)取暖。
    是米蟲(chóng)啊閱讀 160評(píng)論 1 1