php随机抽奖实例分析
本文实例讲述了php随机抽奖用法。分享给大家供大家参考。具体分析如下:
1.按照设定的概率,得到随机抽奖的结果。
<?php /** *抽奖工具 */ classlottery_tool{ protectedstatic$awardsArr; protectedstatic$proField='probability'; protectedstatic$proSum=0; protectedstatic$checkAward=false; constSUCCESS_CODE=0; constFAIL_CODE=-1; //检查抽奖数据 protectedstaticfunctioncheckAwards(){ if(!is_array(self::$awardsArr)||empty(self::$awardsArr)){ returnself::$checkAward=false; } self::$proSum=0; foreach(self::$awardsArras$_key=>$award){ self::$proSum+=$award[self::$proField]; } if(empty(self::$proSum)){ returnself::$checkAward=false; } returnself::$checkAward=true; } protectedstaticfunctionsuccessRoll($rollKey){ returnarray('code'=>self::SUCCESS_CODE,'roll_key'=>$rollKey,'msg'=>'rollsuccess'); } protectedstaticfunctionfailRoll($msg='rollfail'){ returnarray('code'=>self::FAIL_CODE,'msg'=>$msg); } //抽奖 publicstaticfunctionroll(){ if(false==self::$checkAward){ returnself::failRoll('awardsdataisnottherightformat!'); } $result=mt_rand(0,self::$proSum); $proValue=0; foreach(self::$awardsArras$_key=>$value){ $proValue+=$value[self::$proField]; if($result<=$proValue){ returnself::successRoll($_key); } } returnself::failRoll('wrong'); } //改变概率字段名 publicstaticfunctionsetProField($field=null){ if(!empty($field)){ self::$proField=$field; } } //设置奖品 publicstaticfunctionsetAwards($awards){ self::$awardsArr=$awards; self::checkAwards(); } }
2.示例代码:
$awards=array( '0'=>array('pro'=>15,'info'=>'15%的可能性'), '1'=>array('pro'=>25,'info'=>'25%的可能性'), '2'=>array('pro'=>40,'info'=>'40%的可能性'), '3'=>array('pro'=>20,'info'=>'20%的可能性'), ); lottery_tool::setProField('pro'); lottery_tool::setAwards($awards); $result=array(); for($i=10000;$i--;){ $result[]=lottery_tool::roll(); } foreach($resultas$key=>$value){ $awards[$value['roll_key']]['num']++; } echo'<pre>'; var_dump($awards);
运行结果如下:
array 0=> array 'pro'=>int15 'info'=>string'15%的可能性'(length=15) 'num'=>int1596 1=> array 'pro'=>int25 'info'=>string'25%的可能性'(length=15) 'num'=>int2484 2=> array 'pro'=>int40 'info'=>string'40%的可能性'(length=15) 'num'=>int3939 3=> array 'pro'=>int20 'info'=>string'20%的可能性'(length=15) 'num'=>int1981
希望本文所述对大家的php程序设计有所帮助。