php抽奖概率算法
| 1234567891011121314151617181920212223242526272829303132333435363738 | //概率算法,6個(gè)獎(jiǎng)項(xiàng)$prize_arr?=?array(????'0'?=>?array('id'=>1,'prize'=>'iphone6','v'=>1),????'1'?=>?array('id'=>2,'prize'=>'數(shù)碼相機(jī)','v'=>5),????'2'?=>?array('id'=>3,'prize'=>'音箱設(shè)備','v'=>10),????'3'?=>?array('id'=>4,'prize'=>'50Q幣','v'=>24),????'4'?=>?array('id'=>5,'prize'=>'10Q幣','v'=>60),????'5'?=>?array('id'=>6,'prize'=>'1Q幣','v'=>1900),);????//每個(gè)獎(jiǎng)品的中獎(jiǎng)幾率,獎(jiǎng)品ID作為數(shù)組下標(biāo)foreach($prize_arr?as?$val){????$item[$val['id']]?=?$val['v'];}????function?get($item){????//中獎(jiǎng)概率基數(shù)?????$num?=?array_sum($item);//當(dāng)前一等獎(jiǎng)概率1/2000????????foreach($item?as?$k=>$v){????????//獲取一個(gè)1到當(dāng)前基數(shù)范圍的隨機(jī)數(shù)????????$rand?=?mt_rand(1,$num);????????if($rand?<=?$v){????????????//假設(shè)當(dāng)前獎(jiǎng)項(xiàng)$k=2,$v<=5才能中獎(jiǎng)????????????$res?=?$k;????????????break;????????}else{????????????//假設(shè)當(dāng)前獎(jiǎng)項(xiàng)$k=6,$v>1900,則沒(méi)中六等獎(jiǎng),總獲獎(jiǎng)基數(shù)2000-1900,前五次循環(huán)都沒(méi)中則2000-1-5-10-24-60=1900,必中6等獎(jiǎng),哈哈????????????$num?-=?$v;????????}????}????return?$res;}????????$res?=?get($item);$h?=?$prize_arr[$res-1]['prize'];echo?$h.';?'; |
轉(zhuǎn)載于:https://www.cnblogs.com/gmlblog/p/5283407.html
總結(jié)
- 上一篇: 中国特色版iPhone或推出 为了挽回
- 下一篇: php框架laravel:数据库建立:a