三零网 www.q3060.com -- 技术、分享、进步
当前位置:首页 > 网络编程 > PHP编程 > PHP 概率抽奖算法示例

PHP 概率抽奖算法示例

投稿:mmko3211p  发布时间:2017-04-22  【手机版】  人气:

 下面为各位大家介绍一下PHP 概率抽奖算法示例 ,感兴趣的小伙伴一起来看看吧。

get_rand 方法是一段經典的概率算法,$proArr是一個預先設置的數組,例如數組為:array(1=>5,2=>10,3=>10,4=>20,5=>25,6=>30),鍵對應的是中獎等級,值對應中獎概率,開始從1,100這個概率範圍內篩選第一個數是否在它的出現概率範圍之內,如果不在,剛將概率空間範圍收縮,在本例當中就是減去5,也就是說第二個數在1,95這個範圍內篩選的。以此類推,這樣篩選到最終,總會有一個數滿足要求。這個算法裝簡單。到最終抽到數據在概率範圍內時,就將等級id返回。

function get_rand($proArr) {
        $result = ''; 
        $proSum = array_sum($proArr); //概率數組的總概率精度 
        //概率數組循環 
        foreach ($proArr as $key => $proCur) { 
            $randNum = mt_rand(1, $proSum); 
            if ($randNum <= $proCur) { 
                $result = $key; 
                break; 
            } else { 
                $proSum -= $proCur; 
            } 
        } 
        unset ($proArr); 
        return $result; 
    
    } 
/*上面是獲取抽獎等級結果的方法,那麼在下面這裏設置一下中獎相關數據,以數組的形式表示,
  *id   中獎id
  *v    中獎概率
  *p    中獎獎品
  *注:所配置概率值必需為整數
  */

$prize_arr = array( 
        array('id'=>1,'v'=>5, 'p'=>'一等獎'), 
        array('id'=>2,'v'=>10,'p'=>'二等獎'), 
        array('id'=>3,'v'=>10,'p'=>'三等獎'), 
        array('id'=>4,'v'=>20,'p'=>'四等獎'), 
        array('id'=>5,'v'=>25,'p'=>'優秀獎'), 
        array('id'=>6,'v'=>30,'p'=>'安慰獎'), 
    ); 
/*
  *獎項相關數據設置完畢之後,接下來我們要做的就是要將中獎的數組數據重組生成:等級id=>等級對的應概率,這種方式交給get_rand方法去獲取得最終中獎的等級id
*/

$rand_arr = array();
foreach ($prize_arr as $key => $val) { 
    $rand_arr[$val['id']] = $val['v']; 
}
$rval = get_rand($rand_arr); //根據概率獲取中獎的等級id

//最後獲取得到$rval這個就是中獎的等級id,根據這個id,我們就可以處理獎項數據

$lucky = $unlucky = array();
foreach($prize_arr as $key=>$val){
    if($val['id']==$rval){
        $lucky = $val;
    }else{
        $unlucky[] = $val;
    }
}

/*到了這裏,中獎的信息與沒有中獎的信息已經分開兩數組存放,。到最後就是處理結果,這裏簡單處理一下,看一下效果。到此,PHP處理的抽獎信息部分已經完成,至於其它的相關聯的處理操作,例如如果異步js的操作,這些不在此列出**/

echo '恭喜你獲得:'.$lucky['p'];

这里只是简单介绍一下PHP 概率抽奖算法示例 的内容,仅供大家参考。有兴趣的可以继续浏览下页。

●【往下看,下一页更精彩】●
1  2  3  4  5  6  7  下一页 
延伸阅读:
·PHP 二叉堆实现TopK-算法的介绍
·PHP 常用排序算法:基本排序,冒泡排序,快速排序,插入排序
·PHP 递归算法无限遍历数组的实现方法
·php 中奖概率算法示例
·php 对称加密算法
·PHP 利用SnowFlake算法生成唯一ID
·php递归获取文件夹所有文件的算法
·PHP浅析URL转换短网址的算法
·php排序算法的实现例子
·php用户密码的加密算法分享
  
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,请收藏本网站!
三零网 | 网站地图| 最近更新 | 关于我们 | 联系方式 | |

Copyright © 2012-2020,Q3060.COM All Rights Reserved.