手机
当前位置:查字典教程网 >编程开发 >php教程 >php随机抽奖实例分析
php随机抽奖实例分析
摘要:本文实例讲述了php随机抽奖用法。分享给大家供大家参考。具体分析如下:1.按照设定的概率,得到随机抽奖的结果。复制代码代码如下:$award...

本文实例讲述了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 批量查询搜狗sogou代码分享

php操作memcache缓存方法分享

php中get_defined_constants函数用法实例分析

xml+php动态载入与分页

php自定义hash函数实例

php实现的mongodb操作类实例

随机头像PHP版

PHP中的事务使用实例

php操作MongoDB类实例

精品推荐
分类导航