IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php实现抽奖 -> 正文阅读

[PHP知识库]php实现抽奖

不啰嗦,直接上代码

<?php
class LuckDrawTest
{
    private $number_rand = [] ; // 中奖号码 不重复
    private $number_arr  = [] ; // 已经获得本次部分
    private $number_num       ; // 中奖总概率
    private $number_sum  = 0  ; // 单次概率 即获得中奖号码个数
    private $luck_num    = 0  ; // 中奖号码
    private $is_luck     = 0  ;
    private $luck_arr    = [] ;  // 中奖信息

    public function __construct()
    {
        $this->number_num = 100 ; // pro 比例 百分之1 则为 100  万分之1 则为 10000
    }

    // 全概率计算
    public function index()
    {
        // 全部有效奖品
        $prize_arr = [
            ['id'=>1, 'name'=>'10000元现金大礼包','pro'=>1],
            ['id'=>2, 'name'=>'5000元现金中礼包','pro'=>2],
            ['id'=>3, 'name'=>'2000元现金红包','pro'=>5],
            ['id'=>4, 'name'=>'1000元现金','pro'=>10],
            ['id'=>5, 'name'=>'500元购物券','pro'=>20],
            ['id'=>6, 'name'=>'200元奖品','pro'=>20],
        ] ;
        $this->luck_num = $this->get_rand() ; // 抽的号码
        $arr = [] ; // 获奖号码
        foreach ($prize_arr as $k=>$v){
            $this->number_sum = $v['pro'] ; // 对比开奖号码个数 即概率
            $this->number_arr = [] ;        // 重置单次中奖号码
            $this->get_rand(1) ;         // 获得开奖号码
            $arr[$k] = $this->number_arr ;  //
            if($this->is_luck){             // 如果已经中奖 则终止出号, 如果多人参与则 调整此处逻辑
                $this->luck_arr = $v ; break ; // 获得奖品id  取id 为了
            }
        }
        if(empty($this->luck_arr)){      // 判断是否已经中奖  如果有参与奖或者必得参与奖则在此处理
            $str =  '下次没准就能中哦' ;
        }else{
            $str = $this->luck_arr['name'] ; // 获得奖品标题
        }

        echo '我的号码:'. $this->luck_num . "\r\n我的奖品:" . $str."\r\n";
        print_r($arr) ; // 全部开奖号码
    }

    public function get_rand($t=0)
    {
        $read_number = mt_rand(1, $this->number_num) ;
        if(!$t) return $read_number ; // 幸运号码

        if(!in_array($read_number, $this->number_rand)){ // 随机数不存在已中奖号码中
            $this->number_arr[] = $read_number ;    // 本次奖品中奖号码
            $this->number_rand[] = $read_number ;   // 全部中奖号码
            $this->number_sum -- ;

            if(in_array($this->luck_num, $this->number_arr)){ // 判断是否已中奖
                $this->is_luck = 1 ;
                return true ;
            }
        }
        
        return $this->number_sum == 0 ? true : $this->get_rand(1) ; //
    }
}

外部直接调用

$t = new LuckDrawTest() ;
return $t->index() ;

其它项目逻辑自行处理

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:07:40  更:2021-09-02 11:08:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:23:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码