PHP编程:php随机抽奖实例分析
发布时间:2020-12-13 02:26:46 所属栏目:PHP教程 来源:网络整理
导读:《php随机抽奖实例分析》要点: 本文介绍了php随机抽奖实例分析,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php随机抽奖用法.供大家参考研究.具体分析如下: PHP实战 1. 依照设定的概率,得到随机抽奖的结果.???? PHP实战 代码如下: ?ph
《php随机抽奖实例分析》要点: 本篇章节讲解php随机抽奖用法.分享给大家供大家参考.具体分析如下:PHP实战 1. 依照设定的概率,得到随机抽奖的结果.????
代码如下:
<?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. 示例代码:
代码如下:
$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); 运行结果如下:
代码如下:
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程序设计有所赞助.PHP实战 《php随机抽奖实例分析》是否对您有启发,欢迎查看更多与《php随机抽奖实例分析》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |