千家信息网

php如何实现随机抽奖

发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,这篇文章主要介绍了php如何实现随机抽奖,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体分析如下:1. 按照设定的概率,得到随机抽奖
千家信息网最后更新 2025年02月22日php如何实现随机抽奖

这篇文章主要介绍了php如何实现随机抽奖,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体分析如下:

1. 按照设定的概率,得到随机抽奖的结果。

 $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 '
';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如何实现随机抽奖"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0