源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php随机抽奖实例分析

  • 时间:2021-05-30 11:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php随机抽奖实例分析
本文实例讲述了php随机抽奖用法。分享给大家供大家参考。具体分析如下: 1. 按照设定的概率,得到随机抽奖的结果。    
[u]复制代码[/u] 代码如下:
<?php /**  * 抽奖工具  */ class lottery_tool {     protected static $awardsArr;     protected static $proField = 'probability';     protected static $proSum = 0;     protected static $checkAward = false;     const SUCCESS_CODE = 0;     const FAIL_CODE = -1;     //检查抽奖数据     protected static function checkAwards(){         if (!is_array(self::$awardsArr) || empty(self::$awardsArr)) {             return self::$checkAward = false;         }         self::$proSum = 0;         foreach (self::$awardsArr as $_key => $award) {             self::$proSum += $award[self::$proField];         }         if (empty(self::$proSum)) {             return self::$checkAward = false;         }         return self::$checkAward = true;     }     protected static function successRoll($rollKey){         return array('code' => self::SUCCESS_CODE, 'roll_key' => $rollKey, 'msg' => 'roll success');     }     protected static function failRoll($msg = 'roll fail'){         return array('code' => self::FAIL_CODE, 'msg' => $msg );     }     //抽奖     public static function roll () {         if (false == self::$checkAward) {             return self::failRoll('awards data is not the right format!');         }         $result = mt_rand(0, self::$proSum);         $proValue = 0;         foreach (self::$awardsArr as $_key => $value) {             $proValue += $value[self::$proField];             if ($result <= $proValue) {                 return self::successRoll($_key);             }         }         return self::failRoll('wrong');     }     //改变概率字段名     public static function setProField($field = null) {         if (!empty($field)) {             self::$proField = $field;         }     }     //设置奖品     public static function setAwards($awards){         self::$awardsArr = $awards;         self::checkAwards();     } }
2. 示例代码:
[u]复制代码[/u] 代码如下:
$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 ($result as $key => $value) {     $awards[$value['roll_key']]['num'] ++; } echo '<pre>'; var_dump($awards);
运行结果如下:
[u]复制代码[/u] 代码如下:
array   0 =>     array       'pro' => int 15       'info' => string '15%的可能性' (length=15)       'num' => int 1596   1 =>     array       'pro' => int 25       'info' => string '25%的可能性' (length=15)       'num' => int 2484   2 =>     array       'pro' => int 40       'info' => string '40%的可能性' (length=15)       'num' => int 3939   3 =>     array       'pro' => int 20       'info' => string '20%的可能性' (length=15)       'num' => int 1981
希望本文所述对大家的php程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部