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程序设计有所帮助。