<?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 彩票类 lottery的更多相关文章

  1. EX14 彩票中奖 (lottery.pas/c/cpp)

    [题目描述]小明想试试运气去购买彩票,所以他开始研究彩票大乐透的玩法:超级大乐透是指由购买者从01—35共35个号码中选取5个号码为前区号码,并从01—12共12个号码中选取2个号码为后区号码组合为一 ...

  2. 今天分享一个抽奖的类Lottery

    /* * Copyright (C) 2014 Jason Fang ( ijasonfang@gmail.com ) * * Licensed under the Apache License, V ...

  3. 彩票APP将演绎“快鱼吃慢鱼”的发展轨迹

    思科CEO钱伯斯有句名言,叫"快鱼吃慢鱼",他觉得"在Internet经济下,大公司不一定打败小公司,可是快的一定会打败慢的."对此观点,笔者表示部分认同,首先 ...

  4. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  5. 使用 Eclipse C/C++ Development Toolkit 开发应用程序

    使用 Eclipse C/C++ Development Toolkit 开发应用程序 (转) 来自http://blog.csdn.net/favory/article/details/189080 ...

  6. Dominate【操作系统的经典算法】

    此篇文章我们来谈一谈操作系统中都出现过哪些算法,请欣赏下图 ↓ 进程和线程管理中的算法 进程和线程在调度时候出现过很多算法,这些算法的设计背景是当一个计算机是多道程序设计系统时,会频繁的有很多进程或者 ...

  7. 2.5w字 + 36 张图爆肝操作系统面试题,太牛逼了!

    欢迎各位大佬访问我的 github ,跪求 star bestJavaer 大家好,我是 cxuan,我之前汇总了一下关于操作系统的面试题,最近又重新翻阅了一下发现不是很全,现在也到了面试季了,所以我 ...

  8. laravel7 百度智能云检测图片是否合规

    APP 文件下建一个Libs目录建一个BaiduService文件,需要检测引入进行调用即可 BaiduService文件内容如下 <?php namespace App\Libs; use A ...

  9. 论文翻译:2021_Performance optimizations on deep noise suppression models

    论文地址:深度噪声抑制模型的性能优化 引用格式:Chee J, Braun S, Gopal V, et al. Performance optimizations on deep noise sup ...

随机推荐

  1. 常用字符串API

    java.lang.string.1.0 1.char charAt(int index)  返回给定位置的代码单元. 2.int codePointAt(int index) 返回从给定位置开始或字 ...

  2. 集合类学习之Hashmap机制研究

    1.遍历的两种实现方法 //新建 Map map=new HashMap(); //存储值 map.put() ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //遍历方式 ...

  3. iOS定位 - 普通定位(没有地图) - 反地理编码(得到具体位置)

    #import <CoreLocation/CoreLocation.h> 使用到的头文件 要引入CoreLocation这个包 <CLLocationManagerDelegate ...

  4. iOS在照片上添加水印

    在做项目的时候我们需要将拍摄的照片做上标记防止图片被他人盗用,所以这就需要在照片的上面加上水印,以表示此照片的独一无二. 加水印不是要在上面添加上几个Label,而是我们要把字画到图片上成为一个整体. ...

  5. 用NOPI将图片二进制流导出到Excel

    这儿采取的是将图片的二进制流导出到Excel,直接上代码: /// <summary> /// DataTable导出到Excel的MemoryStream /// </summar ...

  6. AutoEventWireup="false"

    在 Web 服务器控件中,某些事件(通常是 Click 事件)会导致窗体被回发到服务器.HTML 服务器控件和 Web 服务器控件(如 TextBox 控件)中的更改事件将被捕获,但不会立即导致发送. ...

  7. Template_17_metaprogram

    1,模板实例化机制是一种基本的递归语言机制,可以用于在编译期执行复杂计算.2,枚举值和静态常量在原来的C++编译器中,在类声明的内部,枚举值是声明"真常值"(常量表达式)的唯一方法 ...

  8. const type& 与 type& 的区别

    const type& 与 type& 是C/C++编程中容易混淆的两个知识点,现在以 cont int& 与 int& 为例讲解: 1.int& 讲解 int ...

  9. IOS引导页拨动4张图片最后一张停三秒进入主页,页面推送

    // //  ViewController.m // // //  Created by 张艳锋 on 15/8/26. //  Copyright (c) 2015年 张艳锋. All rights ...

  10. C语言成绩测试 ,水仙花数,打印星图

    #include <stdio.h>//输入输出头文件 #include<string.h> #include<stdlib.h> //局部被调用函数1 成绩检测 ...