您现在的位置是:网站首页>>PHP>>php

php 实现抽奖功能

发布时间:2020-04-03 10:29:52作者:wangjian浏览量:132点赞量:2

    最近做的小程序有一个抽奖功能,这里记录下实现抽奖功能的具体流程

    前提:

    有一组奖品数据如下

    id奖品(prize)概率(rate)数量(num)已抽数量(prize_num)
    1一等奖10%100
    2二等奖15%200
    3三等奖35%500

    根据如上实现抽奖如下($prizes表示上面表格数据)

    //进行抽奖
    $data = [];
    foreach ($prizes as $prize) {
        if (($prize['num'] - $prize['prize_num']) > 0) {
            $data[$prize['id']] = 100 * ($prize['rate']);
        }
    };
    //获取所有奖品的总概率
    $sum = array_sum($data);
    $countSum = 100;
    if ($sum < $countSum) {
        $data[0] = $countSum - $sum;//不满100%,表示没有抽取到奖品
    }
    $result = 0;
    //概率数组总精度
    //概率数组循环
    foreach ($data as $key => $value) {
        $randNum = mt_rand(1, $countSum);
        if ($randNum <= $value) {
            $result = $key;
            break;
        } else {
            $countSum -= $value;
        }
    }
    unset($arr);
    echo $result;//抽到的ID值,0表示没有抽到奖品

    根据如上就可以实现抽奖功能

2 +1