摘要:隨機數(shù)理論上是概率均等的,那么相應的區(qū)間所含數(shù)的多少就體現(xiàn)了抽獎物品概率的不同。
/* * 不同概率的抽獎原理就是把0到*(比重總數(shù))的區(qū)間分塊 * 分塊的依據(jù)是物品占整個的比重,再根據(jù)隨機數(shù)種子來產(chǎn)生0-* 中的某個數(shù) * 判斷這個數(shù)是落在哪個區(qū)間上,區(qū)間對應的就是抽到的那個物品。 * 隨機數(shù)理論上是概率均等的,那么相應的區(qū)間所含數(shù)的多少就體現(xiàn)了抽獎物品概率的不同。 */ function get_rand($proArr) { $result = array(); foreach ($proArr as $key => $val) { $arr[$key] = $val["v"]; } $proSum = array_sum($arr); // 計算總權(quán)重 $randNum = mt_rand(1, $proSum); $d1 = 0; $d2 = 0; for ($i=0; $i < count($arr); $i++) { $d2 += $arr[$i]; if($i==0) { $d1 = 0; } else { $d1 += $arr[$i-1]; } if($randNum >= $d1 && $randNum <= $d2) { $result = $proArr[$i]; } } unset ($arr); return $result; } /* * 使用較多的為這個方法 */ function get_rand1($proArr) { $result = array(); foreach ($proArr as $key => $val) { $arr[$key] = $val["v"]; } // 概率數(shù)組的總概率 $proSum = array_sum($arr); asort($arr); // 概率數(shù)組循環(huán) foreach ($arr as $k => $v) { $randNum = mt_rand(1, $proSum); if ($randNum <= $v) { $result = $proArr[$k]; break; } else { $proSum -= $v; } } return $result; }
/* * 獎項數(shù)組 * 獎品id,名稱,比重 */ $arr = array( array("id"=>1,"name"=>"特等獎","v"=>1), array("id"=>2,"name"=>"一等獎","v"=>5), array("id"=>3,"name"=>"二等獎","v"=>10), array("id"=>4,"name"=>"三等獎","v"=>12), array("id"=>5,"name"=>"四等獎","v"=>22), array("id"=>6,"name"=>"沒中獎","v"=>50) ); 測試結(jié)果(10000次): get_rand(): count_1:0 count_2:490 count_3:1021 count_4:1172 count_5:2172 count_6:5145 特等獎中獎率全為:0 get_rand1(): count_1:92 count_2:477 count_3:1017 count_4:1195 count_5:2264 count_6:4955 總體感覺 get_rand1() 更準確些......
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22025.html
摘要:演示下載地址效果圖三個金蛋一把錘子及中獎結(jié)果代碼如下錘子當鼠標滑向金蛋時,錘子會僅靠金蛋右上方,通過來控制位置。當揮動錘子砸向金蛋前,我們先把金蛋中的數(shù)字編號隱藏起來。最后,我們向后臺發(fā)送一個請求,后臺程序會處理獎項分配并把中獎結(jié)果返回。 演示下載地址:http://www.erdangjiade.com/js...效果圖:showImg(https://segmentfault.co...
摘要:演示下載地址效果圖三個金蛋一把錘子及中獎結(jié)果代碼如下錘子當鼠標滑向金蛋時,錘子會僅靠金蛋右上方,通過來控制位置。當揮動錘子砸向金蛋前,我們先把金蛋中的數(shù)字編號隱藏起來。最后,我們向后臺發(fā)送一個請求,后臺程序會處理獎項分配并把中獎結(jié)果返回。 演示下載地址:http://www.erdangjiade.com/js...效果圖:showImg(https://segmentfault.co...
摘要:演示下載地址效果圖三個金蛋一把錘子及中獎結(jié)果代碼如下錘子當鼠標滑向金蛋時,錘子會僅靠金蛋右上方,通過來控制位置。當揮動錘子砸向金蛋前,我們先把金蛋中的數(shù)字編號隱藏起來。最后,我們向后臺發(fā)送一個請求,后臺程序會處理獎項分配并把中獎結(jié)果返回。 演示下載地址:http://www.erdangjiade.com/js...效果圖:showImg(https://segmentfault.co...
摘要:演示下載地址效果圖三個金蛋一把錘子及中獎結(jié)果代碼如下錘子當鼠標滑向金蛋時,錘子會僅靠金蛋右上方,通過來控制位置。當揮動錘子砸向金蛋前,我們先把金蛋中的數(shù)字編號隱藏起來。最后,我們向后臺發(fā)送一個請求,后臺程序會處理獎項分配并把中獎結(jié)果返回。 演示下載地址:http://www.erdangjiade.com/js...效果圖:showImg(https://segmentfault.co...
閱讀 2847·2021-09-28 09:45
閱讀 1511·2021-09-26 10:13
閱讀 913·2021-09-04 16:45
閱讀 3671·2021-08-18 10:21
閱讀 1099·2019-08-29 15:07
閱讀 2642·2019-08-29 14:10
閱讀 3154·2019-08-29 13:02
閱讀 2471·2019-08-29 12:31