我有个抽奖的轮盘想 根据自己设置的概率 输出  0 1 2 3 4 5 6 7这8个奖项  请问 要怎么写这个概率
比如 7 就高概率的 抽到

解决方案 »

  1.   


    /**
     * 根据概率获取中奖号码
     */
    static public function get_rand() {
    $arr = array(
    array('id'=>1,'name'=>'t等奖','v'=>1),//特等奖
        array('id'=>2,'name'=>'1等奖','v'=>5),//1等奖
        array('id'=>3,'name'=>'2等奖','v'=>10),//2等奖
        array('id'=>4,'name'=>'3等奖','v'=>12),//3等奖
        array('id'=>5,'name'=>'4等奖','v'=>23),//4等奖
        array('id'=>6,'name'=>'5等奖','v'=>59),//5等奖
        array('id'=>7,'name'=>'6等奖','v'=>80),//6等奖
    array('id'=>8,'name'=>'7等奖','v'=>100)//7等奖
        );
    return self::get_rand1($arr);
    }
    static function get_rand1($proArr) {
        $result = array();
        foreach ($proArr as $key => $val) {
            $arr[$key] = $val['v'];
        }
        // 概率数组的总概率
        $proSum = array_sum($arr);
        asort($arr);
        // 概率数组循环
        foreach ($arr as $k => $v) {
            $randNum = mt_rand(1, $proSum);
            if ($randNum <= $v) {
                $result = $proArr[$k];
                break;
            } else {
                $proSum -= $v;
            }
        }
        return $result;
    }自己找到了 有需要的朋友可以用用  ,数组里面的v是控制概率的