知识大全 PHP中奖概率的抽奖算法程序代码

Posted 概率

篇首语:我希望在颠沛流离之后,还能够重新遇见温暖的你,那时候,你刚好成熟,而我,刚好学会温柔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP中奖概率的抽奖算法程序代码相关的知识,希望对你有一定的参考价值。

PHP中奖概率的抽奖算法程序代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  初期就这些需求 然后根据网上的资料 采用了一种阶段式抽取的方法 大家下面看一下整体的程序 该程序是在ThinkPHP框架下完成的 使用了一些框架自带的类库和函数 下面我会逐一进行说明 控制器部分

 

  抽奖算法需要满足的需求如下

   可以控制中奖的概率

   具有随机性

   最好可以控制奖品的数量

   根据用户ID或者ip 手机号 QQ号等条件限制抽奖次数

   初期就这些需求 然后根据网上的资料 采用了一种阶段式抽取的方法 大家下面看一下整体的程序

  该程序是在ThinkPHP框架下完成的 使用了一些框架自带的类库和函数 下面我会逐一进行说明 控制器部分

 代码如下   <?php    /**  *   *  * @lanfengye <zibin_ @ >  */ class ChoujiangAction extends Action      //抽奖的开始时间     var $begin_time=" : : "; //开始时间  不限制     //抽奖的结束时间     var $stop_time=" ";  //结束时间  不限制            //本次抽奖的奖项信息 必须按照从大到小的顺序进行填写 id为奖次 prize为中奖信息 v为中奖概率 num为奖品数量     //需要注意的是 该处也必须包含不中奖的信息 概率从小到大进行排序     var $prize_arr = array(         => array( id => prize => 元购买 G/年空间 v => num => )         => array( id => prize => 元购买 G/年空间 v => num => )         => array( id => prize => 元购买 G/年空间 v => num => )         => array( id => prize => 元购买 G/年空间 v => num => )         => array( id => prize => 元购买 G/年空间 v => num => )         => array( id => prize => 元购买 G/年空间 v => num => )     );             //首页显示方法          public function index()         //连接数据库 去获取本次中奖的人员名单         $Choujiang=M( Choujiang );         $this >assign( list $Choujiang >where("rid> ") >order( id desc ) >select());         unset($Choujiang);                    //在首页中显示抽奖的开始时间         $this >assign( begin_time $this >begin_time);                    $this >display();                          /**      * 生成中奖信息 ajax进行请求该方法 需要客户填写QQ号码      */     public function make()         $qq_no=  trim($_POST[ qq_no ]);         import( ORG Util Input );         $qq_no=Input::getVar($qq_no);                    if(empty($qq_no))             $this >ajaxReturn( 请正确填写QQ号码! );             exit;                            if(!empty($this >begin_time) && time()<strtotime($this >begin_time))             $this >ajaxReturn( 抽奖还没有开始 开始时间为 $this >begin_time);             exit;                            if(!empty($this >stop_time) && time()>strtotime($this >stop_time))             $this >ajaxReturn( 本次抽奖已经结束 结束时间为 $this >stop_time);             exit;                             //获取奖项信息数组 来源于私有成员         $prize_arr=  $this >prize_arr;                    foreach ($prize_arr as $key => $val)             $arr[$val[ id ]] = $val[ v ];                 //$rid中奖的序列号码         $rid = $this >get_rand($arr); //根据概率获取奖项id                    $str = $prize_arr[$rid ][ prize ]; //中奖项                     $Choujiang=M( Choujiang );                        //从数据库中获取特定QQ号已经参加抽奖的次数 如果大于等于 则提示次数用完         if($Choujiang >where("qq_no= $qq_no ") >count()>= )             $str= 您 次抽奖机会已经用完! ;             $rid= ;             //从数据库中获取特定奖项序号的次数 大于等于设置的最大次数则提示奖品被抽完 如果需要一直中最后一个纪念奖 则修改该处即可         elseif ($Choujiang >where("rid=$rid") >count()>=$prize_arr[$rid ][ num ])             $str= 很抱歉 您所抽中的奖项已经中完! ;             $rid= ;                 //生成一个用户抽奖的数据 用来记录到数据库         $data=array(             rid =>$rid             pop =>$str             qq_no =>$qq_no             input_time =>time()         );         //将用户抽奖信息数组写入数据库                    $Choujiang >add($data);         unset($Choujiang);                     //ajax返回信息         $this >ajaxReturn( $str);                /**      * 根据概率获取中奖号码      */     private function get_rand($proArr)         $result = ;         //概率数组的总概率精度          $proSum = array_sum($proArr);         //概率数组循环          foreach ($proArr as $key => $proCur)             $randNum = mt_rand( $proSum);             if ($randNum <= $proCur)                 $result = $key;                 break;             else                 $proSum = $proCur;                             unset($proArr);         return $result;                     ?> cha138/Article/program/PHP/201311/21193

相关参考

知识大全 php 手机号码正则表达试程序代码

  代码如下  functionfuncMtel($str)//手机号码正则表达试    return(preg_match("/(?:d|[])d$/"$str))?true:false;    测

知识大全 php匹配字符中链接地址程序代码

  判断一个字符串是否含有超级链接 代码如下   $str="ssdsf<atarget=_blank>sdf</a>sdfss";if(preg_matc

知识大全 php获取url参数程序代码总结

  parse_url函数  我们先来了解一下parse_url函数官方解决  说明  mixedparse_url(string$url[int$ponent=])  本函数解析一个URL并返回一个

知识大全 三种php删除文件代码

下面我收藏了三php删除文件哦他可以利用unlink删除任何可删除的文件本程序要删除文件图片压缩文件等我们利用了几种方法来实例下面我收藏了三php教程删除文件哦他可以利用unlink删除任何可删除的文

知识大全 财富商城抽奖就是坑爹的么敢不敢中一下。百度用不用这么吝啬,送点东西怎么了。那财富值兑换还要求采纳率

财富商城抽奖就是坑爹的么敢不敢中一下。百度用不用这么吝啬,送点东西怎么了。那财富值兑换还要求采纳率百度的使用者实在太多了,假如中奖率调的比较高的话,那就会有很多人中奖,打个比方,中奖率调到10%,使用

知识大全 php程序员入门必读

  概要学习任何语言都需要多看多想多写多问!写编程是一种熟能生巧的东西!学习PHP也一样因为知识就那么多你看多了就会觉得怎么都一样  程序员就是炒冷饭的一遍又一遍代码多敲几遍就可以闭着眼睛写了所以企业

知识大全 有收到雅虎中奖资讯的没有

有收到雅虎中奖资讯的没有?联想赞助的奖金和笔记本,是骗人的吧?春暖花开,兔年中大奖!法律规定抽奖活动奖品价值不能超过5000元你门谁收到了,骗人的领取奖金和电脑的资讯?应该没有真的真的肯定不是那种方式

知识大全 怎么过去取奖呢

我中了二等奖!怎么过去取奖呢?特别提醒你,除了你在彩票店买的彩票,其它所有的中奖、抽奖都是绝对的骗局。特别是你收到的中奖信息、捡到的中奖刮刮卡、接到的中奖电话、收到的中奖信件,无一例外,都是诈骗,辨别

在大型超市组织的购物抽奖活动中获奖,如何缴纳个人所得税?

根据《个人所得税法实施条例》第八条规定,税法第二条所说的偶然所得,是指个人得奖、中奖、中彩以及其他偶然性质的所得。《个人所得税法》第三条规定,个人所得税的偶然所得和其他所得适用比例税率,税率为20%。

知识大全 浅析php变量修饰符static的使用

  静态变量仅在局部函数域中存在但当程序执行离开此作用域时其值并不丢失看看下面的例子:复制代码代码如下:functiontest()static$a=;$a++;echo$a;  test();//t