成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

php 抽獎概率算法

Jason / 2797人閱讀

摘要:隨機數(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

相關(guān)文章

  • jQuery+PHP實現(xiàn)砸金蛋抽獎

    摘要:演示下載地址效果圖三個金蛋一把錘子及中獎結(jié)果代碼如下錘子當鼠標滑向金蛋時,錘子會僅靠金蛋右上方,通過來控制位置。當揮動錘子砸向金蛋前,我們先把金蛋中的數(shù)字編號隱藏起來。最后,我們向后臺發(fā)送一個請求,后臺程序會處理獎項分配并把中獎結(jié)果返回。 演示下載地址:http://www.erdangjiade.com/js...效果圖:showImg(https://segmentfault.co...

    Invoker 評論0 收藏0
  • jQuery+PHP實現(xiàn)砸金蛋抽獎

    摘要:演示下載地址效果圖三個金蛋一把錘子及中獎結(jié)果代碼如下錘子當鼠標滑向金蛋時,錘子會僅靠金蛋右上方,通過來控制位置。當揮動錘子砸向金蛋前,我們先把金蛋中的數(shù)字編號隱藏起來。最后,我們向后臺發(fā)送一個請求,后臺程序會處理獎項分配并把中獎結(jié)果返回。 演示下載地址:http://www.erdangjiade.com/js...效果圖:showImg(https://segmentfault.co...

    kaka 評論0 收藏0
  • jQuery+PHP實現(xiàn)砸金蛋抽獎

    摘要:演示下載地址效果圖三個金蛋一把錘子及中獎結(jié)果代碼如下錘子當鼠標滑向金蛋時,錘子會僅靠金蛋右上方,通過來控制位置。當揮動錘子砸向金蛋前,我們先把金蛋中的數(shù)字編號隱藏起來。最后,我們向后臺發(fā)送一個請求,后臺程序會處理獎項分配并把中獎結(jié)果返回。 演示下載地址:http://www.erdangjiade.com/js...效果圖:showImg(https://segmentfault.co...

    genedna 評論0 收藏0
  • jQuery+PHP實現(xiàn)砸金蛋抽獎

    摘要:演示下載地址效果圖三個金蛋一把錘子及中獎結(jié)果代碼如下錘子當鼠標滑向金蛋時,錘子會僅靠金蛋右上方,通過來控制位置。當揮動錘子砸向金蛋前,我們先把金蛋中的數(shù)字編號隱藏起來。最后,我們向后臺發(fā)送一個請求,后臺程序會處理獎項分配并把中獎結(jié)果返回。 演示下載地址:http://www.erdangjiade.com/js...效果圖:showImg(https://segmentfault.co...

    Alliot 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<