加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP编程:php随机抽奖实例分析

发布时间:2020-12-13 02:26:46 所属栏目:PHP教程 来源:网络整理
导读:《php随机抽奖实例分析》要点: 本文介绍了php随机抽奖实例分析,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php随机抽奖用法.供大家参考研究.具体分析如下: PHP实战 1. 依照设定的概率,得到随机抽奖的结果.???? PHP实战 代码如下: ?ph

《php随机抽奖实例分析》要点:
本文介绍了php随机抽奖实例分析,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解php随机抽奖用法.分享给大家供大家参考.具体分析如下:PHP实战

1. 依照设定的概率,得到随机抽奖的结果.????
PHP实战

代码如下:
<?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);

运行结果如下:
PHP实战

代码如下:
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为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读