php随机抽奖实例分析_php教程-查字典教程网
php随机抽奖实例分析
php随机抽奖实例分析
发布时间:2016-12-29 来源:查字典编辑
摘要:本文实例讲述了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教程学习
    编程开发子分类