<?php /*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/ /**
* Lottery class
*
* @author Rafal Strojek <strojek.rafal@gmail.com>
* @copyright 2014 (c) Rafal Strojek
* @version 0.1
*/ class Lottery
{
/**
* Default parameters
*/
private $params = array(); /**
* Numbers to drawn
*/
private $numbers = array(); /**
* Constructor
*
* @param array $params User-defined parameters
*/
public function __construct($params = array())
{
$this->params = array_merge($this->getDefaultParameters(),$params);
$this->numbers = range($this->params['from'], $this->params['to'], 1); $this->seedRand();
} /**
* Gets default parameters
*
* @return array Default Parameters
*/
public function getDefaultParameters()
{
return array(
'from' => 1,
'to' => 49,
'numbers' => 6,
'seed' => (int) ((float) microtime() * 1000000),
'pow' => pow(2,24),
);
} /**
* Gets parameters
*
* @return array Lottery parameters
*/
public function getParameters()
{
return $this->params;
} public function getSeed()
{
return (int) $this->params['seed'];
} private function setSeed($seed = null)
{
$this->params['seed'] = ($seed) ? $seed : $this->makeSeed(); // Return instance to shortcut
return $this;
} private function seedRand()
{
mt_srand($this->getSeed());
} private function makeSeed()
{
return (int) ((mt_rand() + ((float) microtime() * 1000000)) % $this->params['pow']);
} public function createTicket()
{
$ticket = array();
$array = $this->numbers; for($i = 0; $i < $this->params['numbers']; $i++)
{
$this->setSeed()->seedRand();
$key = mt_rand(0, (count($array) - 1)); $ticket[$i] = $array[$key];
array_splice($array, $key, 1);
} asort($ticket); return $ticket;
} public function createTickets($count = null)
{
if($count <= 0)
{
return array();
} $count = min(500, max(1, $count));
$tickets = array();
for($i = 0; $i < $count; $i++)
{
$tickets[$i] = $this->createTicket();
} return $tickets; }
}