• php *类 lottery


    <?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;
            
        }
    }
  • 相关阅读:
    php单元测试标注(注解)
    python数字图像处理(1):环境安装与配置
    python实现身份证识别
    python tensorflow 学习
    python tensorflow 安装
    python 微信跳一跳进阶
    python 微信跳一跳和源码解读
    C#保存登录用户名供其他页面调用
    C#解析复杂的Json成Dictionary<key,value>并保存到数据库(多方法解析Json 四)
    C# JavaScriptSerializer 解析Json数据(多方法解析Json 三)
  • 原文地址:https://www.cnblogs.com/walter371/p/4099625.html
Copyright © 2020-2023  润新知