zoukankan      html  css  js  c++  java
  • 概率抽奖

    <?php
    $prize_arr = array(
        '0' => array('id' => 1, 'title' => '二等奖', 'v' => 20),
        '1' => array('id' => 2, 'title' => '三等奖', 'v' => 100),
        '2' => array('id' => 3, 'title' => '四等奖', 'v' => 100),
        '3' => array('id' => 4, 'title' => '未中奖', 'v' => 1000),
    );
      
    foreach ($prize_arr as $key => $val) {
        $arr[$val['id']] = $val['v'];
    }
     //$arr= [1=>'phone',2=>'note']
     //print_r($arr);die;
    $prize_id = getRand($arr); //根据概率获取奖品id
    $data['msg'] = ($prize_id == 4) ? 0 : 1; //如果为0则没中 
    $data['prize_title'] = $prize_arr[$prize_id - 1]['title']; //中奖奖品
    echo json_encode($data);
    exit; //以json数组返回给前端
      
    function getRand($proArr) { //计算中奖概率
        $rs = ''; //z中奖结果
        $proSum = array_sum($proArr); //概率数组的总概率精度
        //概率数组循环
        foreach ($proArr as $key => $proCur) {
            $randNum = mt_rand(1, $proSum);
            if ($randNum <= $proCur) {
                $rs = $key;
                break;
            } else {
                $proSum -= $proCur;
            }
        }
        unset($proArr);
        return $rs;
    }
    
    
    
    
    
    
    
    
    
    ?>
    

      

  • 相关阅读:
    【模板】Sparse-Table
    UVa 11235 Frequent values
    【模板】树状数组
    UVa 1428 Ping pong
    数学技巧
    UVa 11300 Spreading the Wealth
    UVa 11729 Commando War
    UVa 11292 Dragon of Loowater
    POJ 3627 Bookshelf
    POJ 1056 IMMEDIATE DECODABILITY
  • 原文地址:https://www.cnblogs.com/yszr/p/15212782.html
Copyright © 2011-2022 走看看