有个转盘需求 一共有9个奖品,一共会有16套概率,每次抽奖只会使用一套概率,请问各位大佬,有好的设计方式吗?

2. 问题描述?

有个转盘需求 一共有9个奖品,根据不同的条件组合,一共会有16套概率,每次抽奖只会使用一套概率,if else 写的手疼,请问各位大佬,有好的设计方式吗?

条件组合存在规律, 条件有优先级,每次抽奖只返回一套概率,目前我是把条件决定元素抽离出来,然后进行判断,决定使用16套概率中的一套概率,由这几个条件组成

  /**
     * 1  正常  2吐水
     * @var int
     */
    protected $level = 0;
    /**
     * 转盘 类型 1 普通 2 豪华
     * @var int
     */
    protected $luckTurntableType = 0;

    /**
     * 1 单抽
     * 转盘抽奖类型 1k(单抽)、10k(10连抽)、50k(50连抽)
     * @var int
     */
    protected $gearType = 0;

    /**
     * 是否每日第一次抽取
     * @var int 1 是 0 不是
     */
    protected $dailyFirstPlay = 0;

    /**
     * 是否是暴击时刻 1 是 0 不是
     * @var int
     */
    protected $criticalMoment = 0;

    /**
     * 暴击时刻类型 1 A 礼物 2 B 礼物
     * @var int
     */
    protected $criticalMomentPrizeType = 0;

    /**
     * 是否是大奖 1 是 0 不是
     * @var int
     */
    protected $isGrandPrize = 0;

目前的实现方式

定义 根据条件组合获取的其中一套概率的类

<?php

/**
 * 转盘策略
 */
class Services_LuckTurntableStrategyModel
{
    /**
     * 1  正常  2吐水
     * @var int
     */
    protected $level = 0;
    /**
     * 转盘 类型 1 普通 2 豪华
     * @var int
     */
    protected $luckTurntableType = 0;

    /**
     * 1 单抽
     * 转盘抽奖类型 1k(单抽)、10k(10连抽)、50k(50连抽)
     * @var int
     */
    protected $gearType = 0;

    /**
     * 是否每日第一次抽取
     * @var int 1 是 0 不是
     */
    protected $dailyFirstPlay = 0;

    /**
     * 是否是暴击时刻 1 是 0 不是
     * @var int
     */
    protected $criticalMoment = 0;

    /**
     * 暴击时刻类型 1 A 礼物 2 B 礼物
     * @var int
     */
    protected $criticalMomentPrizeType = 0;

    /**
     * 是否是大奖 1 是 0 不是
     * @var int
     */
    protected $isGrandPrize = 0;

    protected $controllerLog = [];

    /**
     * @param int $level
     * @param int $luckTurntableType
     * @param int $gearType
     * @param int $dailyFirstPlay
     * @param int $criticalMoment
     * @param int $criticalMomentPrizeType
     * @param int $isGrandPrize
     */
    public function __construct(
        int $level,
        int $luckTurntableType,
        int $gearType,
        int $dailyFirstPlay,
        int $criticalMoment,
        int $criticalMomentPrizeType,
        int $isGrandPrize
    )
    {
        $this->level = $level;
        $this->luckTurntableType = $luckTurntableType;
        $this->gearType = $gearType;
        $this->dailyFirstPlay = $dailyFirstPlay;
        $this->criticalMoment = $criticalMoment;
        $this->criticalMomentPrizeType = $criticalMomentPrizeType;
        $this->isGrandPrize = $isGrandPrize;
    }


    public function main()
    {

        $this->controllerLog = [
            '当前转盘所属区间' => $this->level == 1 ? '正常' : '吐水',
        ];
        $this->controllerLog['是否暴击时刻'] = $this->criticalMoment == 0 ? '否' : '是';
        $this->controllerLog['是否大奖保护'] = $this->isGrandPrize == 1 ? '是' : '否';
        $this->controllerLog['暴击时刻礼物'] = $this->criticalMomentPrizeType == 1 ? 'A礼物' : 'B礼物';
        $this->controllerLog['当前所属转盘'] = $this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_1 ? '普通转盘' : '豪华转盘';
        //正常概率
        if ($this->level == 1) {

            //正常概率(必中概率)
            if (
                $this->dailyFirstPlay == 1
            ) {

                //单抽 -用户每日首次单抽走首次单抽概率
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_1) {
                    $this->controllerLog['当前抽奖档位类型'] = '单抽';
                    $this->controllerLog['当前所属概率'] = '正常-首次单抽-必中概率';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_1;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_1;
                }

                //5连抽 -第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_5) {
                    $this->controllerLog['当前抽奖档位类型'] = '5连抽';
                    $this->controllerLog['当前所属概率'] = '正常-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_1;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_1;
                }

                //10连抽 -第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_10) {
                    $this->controllerLog['当前抽奖档位类型'] = '10连抽';
                    $this->controllerLog['当前所属概率'] = '正常-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_1;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_1;
                }

                //非暴击时刻-50连抽 -第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50 && $this->criticalMoment == 0) {
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '正常-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_1;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_1;
                }

                //暴击时刻-A礼物-50连抽-第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50 && $this->criticalMoment == 1 && $this->criticalMomentPrizeType == 1) {
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '正常-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_5;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_5;
                }

                //暴击时刻-B礼物-50连抽-第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50 && $this->criticalMoment == 1 && $this->criticalMomentPrizeType == 2) {
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '正常-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_9;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_9;
                }

                if ($this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_1) {
                    //普通转盘-大奖保护-50连抽-第一轮抽奖走必中
                    if ($this->isGrandPrize == 1 && $this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50) {
                        $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                        $this->controllerLog['当前所属概率'] = '正常-第一次抽奖走必中';
                        $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_13;
                        return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_13;
                    }
                }

                if ($this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_2) {
                    //豪华转盘-大奖保护-10连抽-第一轮抽奖走必中
                    if ($this->isGrandPrize == 1 && $this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_10) {
                        $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                        $this->controllerLog['当前所属概率'] = '正常-第一次抽奖走必中';
                        $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_13;
                        return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_13;
                    }
                }
            }

            //暴击时刻-普通转盘用户抽50连抽(只有50抽)使用暴奖概率-正常概率
            if (
                $this->criticalMoment == 1
                && $this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50
                && $this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_1
            ) {

                //A 礼物
                if ($this->criticalMomentPrizeType == 1) {
                    //50连抽 -剩余49次走正常概率
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '正常-剩余49次-正常概率';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_6;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_6;

                }

                //B 礼物B
                if ($this->criticalMomentPrizeType == 2) {
                    //50连抽 -剩余49次走正常概率
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '正常-剩余49次-正常概率';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_10;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_10;
                }

            }

            //大奖保护-正常概率
            //1、48小时内用户连续抽50k(50连抽)个人中奖值达到200分且未抽中大奖礼物时会让用户走大奖保护概率(概率后台配置)
            if ($this->isGrandPrize == 1) {

                if ($this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_1) {
                    //普通转盘-大奖保护-50连抽
                    if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50) {
                        //50连抽 -剩余49次走正常概率
                        $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                        $this->controllerLog['当前所属概率'] = '正常-剩余49次-正常概率';
                        $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_14;
                        return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_14;
                    }
                }

                if ($this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_2) {
                    //豪华转盘-大奖保护-10连抽-第一轮抽奖走必中
                    if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_10) {
                        //50连抽 -剩余10次走正常概率
                        $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                        $this->controllerLog['当前所属概率'] = '正常-剩余49次-正常概率';
                        $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_14;
                        return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_14;
                    }
                }
            }

            //正常概率 - 非必中
            //单抽
            if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_1) {
                $this->controllerLog['当前抽奖档位类型'] = '单抽';
                $this->controllerLog['当前所属概率'] = '正常-正常概率';
                $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;
                return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;
            }

            // 5连抽 - 剩余5次走正常概率
            if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_5) {
                $this->controllerLog['当前抽奖档位类型'] = '10连抽';
                $this->controllerLog['当前所属概率'] = '正常-剩余9次-正常概率';
                $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;
                return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;
            }

            // 10连抽 - 剩余9次走正常概率
            if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_10) {
                $this->controllerLog['当前抽奖档位类型'] = '10连抽';
                $this->controllerLog['当前所属概率'] = '正常-剩余9次-正常概率';
                $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;
                return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;
            }

            // 50连抽 - 剩余49次走正常概率
            if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50) {
                $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                $this->controllerLog['当前所属概率'] = '正常-剩余49次-正常概率';
                $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;
                return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;
            }

            $this->controllerLog['当前抽奖档位类型'] = '错误';
            $this->controllerLog['当前所属概率'] = '错误';
            $this->controllerLog['错误位置'] = 1;
            $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;

            return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_2;

        }

        //吐水概率
        if ($this->level == 2) {

            //正常概率(必中概率)
            if (
                $this->dailyFirstPlay == 1
            ) {

                //单抽 -用户每日首次单抽走首次单抽概率
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_1) {
                    $this->controllerLog['当前抽奖档位类型'] = '单抽';
                    $this->controllerLog['当前所属概率'] = '吐水-首次单抽-必中概率';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_3;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_3;
                }

                //5连抽 -第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_5) {
                    $this->controllerLog['当前抽奖档位类型'] = '5连抽';
                    $this->controllerLog['当前所属概率'] = '吐水-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_3;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_3;
                }

                //10连抽 -第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_10) {
                    $this->controllerLog['当前抽奖档位类型'] = '10连抽';
                    $this->controllerLog['当前所属概率'] = '吐水-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_3;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_3;
                }

                //非暴击时刻-50连抽 -第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50 && $this->criticalMoment == 0) {
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '吐水-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_3;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_3;
                }

                //暴击时刻-A礼物-50连抽-第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50 && $this->criticalMoment == 1 && $this->criticalMomentPrizeType == 1) {
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '吐水-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_7;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_7;
                }

                //暴击时刻-B礼物-50连抽-第一轮抽奖走必中
                if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50 && $this->criticalMoment == 1 && $this->criticalMomentPrizeType == 2) {
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '吐水-第一次抽奖走必中';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_11;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_11;
                }

                //大奖保护-50/10连抽-第一轮抽奖走必中
                if ($this->isGrandPrize == 1) {

                    if ($this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_1) {
                        //普通转盘-大奖保护-50连抽-第一轮抽奖走必中
                        if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50) {
                            $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                            $this->controllerLog['当前所属概率'] = '吐水-第一次抽奖走必中';
                            $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_15;
                            return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_15;
                        }
                    }

                    if ($this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_2) {
                        //豪华转盘-大奖保护-10连抽-第一轮抽奖走必中
                        if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_10) {
                            $this->controllerLog['当前抽奖档位类型'] = '10连抽';
                            $this->controllerLog['当前所属概率'] = '吐水-第一次抽奖走必中';
                            $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_15;
                            return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_15;
                        }
                    }
                }
            }

            //暴击时刻-普通转盘用户抽50连抽(只有50抽)使用暴奖概率-正常概率
            if (
                $this->criticalMoment == 1
                && $this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50
                && $this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_1
            ) {

                //A 礼物
                if ($this->criticalMomentPrizeType == 1) {
                    //50连抽 -剩余49次走正常概率
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '吐水-剩余49次-正常概率';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_8;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_8;

                }

                //B 礼物B
                if ($this->criticalMomentPrizeType == 2) {
                    //50连抽 -剩余49次走正常概率
                    $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                    $this->controllerLog['当前所属概率'] = '吐水-剩余49次-正常概率';
                    $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_12;
                    return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_12;
                }

            }

            //大奖保护-正常概率
            //1、48小时内用户连续抽50k(50连抽)个人中奖值达到200分且未抽中大奖礼物时会让用户走大奖保护概率(概率后台配置)
            if ($this->isGrandPrize == 1 && $this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50) {

                if ($this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_1) {
                    //普通转盘-大奖保护-50连抽
                    if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50) {
                        //50连抽 -剩余49次走正常概率
                        $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                        $this->controllerLog['当前所属概率'] = '吐水-剩余49次-正常概率';
                        $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_16;
                        return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_16;
                    }
                }

                if ($this->luckTurntableType == Objects_LuckTurntableModel::GROUP_ID_2) {
                    //豪华转盘-大奖保护-10连抽-第一轮抽奖走必中
                    if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_10) {
                        //10连抽 -剩余10次走正常概率
                        $this->controllerLog['当前抽奖档位类型'] = '10连抽';
                        $this->controllerLog['当前所属概率'] = '吐水-剩余10次-正常概率';
                        $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_16;
                        return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_16;
                    }
                }

            }

            //吐水-正常概率 - 非必中
            //单抽
            if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_1) {
                $this->controllerLog['当前抽奖档位类型'] = '单抽';
                $this->controllerLog['当前所属概率'] = '吐水-正常概率';
                $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;
                return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;
            }

            // 5连抽 - 剩余5次走正常概率
            if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_5) {
                $this->controllerLog['当前抽奖档位类型'] = '10连抽';
                $this->controllerLog['当前所属概率'] = '吐水-剩余9次-正常概率';
                $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;
                return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;
            }

            // 10连抽 - 剩余9次走正常概率
            if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_10) {
                $this->controllerLog['当前抽奖档位类型'] = '10连抽';
                $this->controllerLog['当前所属概率'] = '吐水-剩余9次-正常概率';
                $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;
                return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;
            }

            // 50连抽 - 剩余49次走正常概率
            if ($this->gearType == Objects_LuckTurntableModel::LOTTERY_TYPE_50) {
                $this->controllerLog['当前抽奖档位类型'] = '50连抽';
                $this->controllerLog['当前所属概率'] = '吐水-剩余49次-正常概率';
                $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;
                return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;
            }

            $this->controllerLog['当前抽奖档位类型'] = '错误';
            $this->controllerLog['当前所属概率'] = '错误';
            $this->controllerLog['错误位置'] = 2;
            $this->controllerLog['type'] = Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;

            return Dao_LuckTurntablePrizeModel::PROBABILITY_TYPE_4;

        }
    }
}
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10

好家伙,难怪我基本没中过奖

2年前 评论

好家伙,难怪我基本没中过奖

2年前 评论

把中奖概率都放在一个数组里面,用array_rand()随机取一个

2年前 评论

好家伙,难怪我基本没中过奖

2年前 评论
mouyong

你的条件组合有规律吗?

// 抽奖策略,包含本次抽奖的所有奖品,并根据自己的规则进行抽奖处理
RafflePolicy {
- prizesRate; // 所有奖品与奖品的中奖概率
- losingPrizeRate; // 未中奖的概率

+ prizeDraw();
- getPrizesRate();
}

// 这个是工厂,获取当前抽奖策略用。
Raffle {
+ getCurrentPolicy(): 
}
2年前 评论
1012415019 (楼主) 2年前
mouyong (作者) 2年前
1012415019 (楼主) 2年前
mouyong (作者) 2年前
1012415019 (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!