zoukankan      html  css  js  c++  java
  • php大转盘抽奖

    对于php抽奖概率在之前章节有

    http://www.cnblogs.com/shiwenhu/p/5650269.html

    现在来设计对于大转盘的中奖,这里定义的数组比之前多了个中间的显示中奖的度数

    <?php
    
    $prize_arr = array( 
        '0' => array('id' => 1, 'min' => 1, 'max' => 29, 'prize' => '一等奖', 'v' => 1), 
        '1' => array('id' => 2, 'min' => 302, 'max' => 328, 'prize' => '二等奖', 'v' => 2), 
        '2' => array('id' => 3, 'min' => 242, 'max' => 268, 'prize' => '三等奖', 'v' => 5), 
        '3' => array('id' => 4, 'min' => 182, 'max' => 208, 'prize' => '四等奖', 'v' => 7), 
        '4' => array('id' => 5, 'min' => 122, 'max' => 148, 'prize' => '五等奖', 'v' => 10), 
        '5' => array('id' => 6, 'min' => 62, 'max' => 88, 'prize' => '六等奖', 'v' => 25), 
        '6' => array('id' => 7, 'min' => array(32, 92, 152, 212, 272, 332), 
            'max' => array(58, 118, 178, 238, 298, 358), 'prize' => '七等奖', 'v' => 50) 
        //min数组表示每个个奖项对应的最小角度 max表示最大角度 
        //prize表示奖项内容,v表示中奖几率(若数组中七个奖项的v的总和为100,如果v的值为1,则代表中奖几率为1%,依此类推) 
     );
    

    function getRand($proArr) { 
        $data = ''; 
        $proSum = array_sum($proArr); //概率数组的总概率精度  
     
        foreach ($proArr as $k => $v) { //概率数组循环 
            $randNum = mt_rand(1, $proSum); 
            if ($randNum <= $v) { 
                $data = $k; 
                break; 
            } else { 
                $proSum -= $v; 
            } 
        } 
        unset($proArr); 
     
        return $data; 
    }


    foreach ($prize_arr as $v) { 
        $arr[$v['id']] = $v['v']; 

     
    $prize_id = getRand($arr); //根据概率获取奖项id  
     
    $res = $prize_arr[$prize_id - 1]; //中奖项  
    $min = $res['min']; 
    $max = $res['max']; 
    if ($res['id'] == 7) { //七等奖  
        $i = mt_rand(0, 5); 
        $data['angle'] = mt_rand($min[$i], $max[$i]); 
    else { 
        $data['angle'] = mt_rand($min, $max); //随机生成一个角度  

    $data['prize'] = $res['prize']; 
     
    echo json_encode($data);
    ?>
  • 相关阅读:
    一直在维护一些项目,其实 这些项目也没有太大的需求,
    iis 7 url 重写
    xmlapp 如何配置
    [转载]什么是native compiler?什么是cross compiler?
    CDC工具
    EDA工具介绍(数字设计)
    让FPGA初学者头疼的各种仿真【转载】
    [SOF] Pointers, smart pointers or shared pointers?
    GNU的工具gmake and make
    mealy machine和moore machine
  • 原文地址:https://www.cnblogs.com/shiwenhu/p/5650345.html
Copyright © 2011-2022 走看看