• 抽奖概率算法


    <?php
    header("Content-Type: text/html; charset=UTF-8");
    function dump($arr){
        echo '<pre>'.print_r($arr,TRUE).'</pre>';
    }
    /*概率算法
    proArr array(100,200,300,400)
    */
    function get_rand($proArr) { 
        $result = '';  
        $proSum = array_sum($proArr);   
        foreach ($proArr as $key => $proCur) { 
            $randNum = mt_rand(1, $proSum); 
            if ($randNum <= $proCur) { 
                $result = $key; 
                break; 
            } else { 
                $proSum -= $proCur; 
            }         
        } 
        unset ($proArr);  
        return $result; 
    }
    /*
    获取中奖
    */
    function  get_prize(){
    $prize_arr = array( 
        array('id'=>1,'prize'=>'平板电脑','v'=>1), 
        array('id'=>2,'prize'=>'数码相机','v'=>1), 
        array('id'=>3,'prize'=>'音箱设备','v'=>1), 
       array('id'=>4,'prize'=>'4G优盘','v'=>1), 
       array('id'=>5,'prize'=>'10Q币','v'=>1), 
       array('id'=>6,'prize'=>'下次没准就能中哦','v'=>95), 
    );
    foreach ($prize_arr as $key => $val) { 
        $arr[$val['id']] = $val['v']; 
    } 
    $ridk = get_rand($arr); //根据概率获取奖项id 
    $res['yes'] = $prize_arr[$ridk-1]['prize']; //中奖项 
    unset($prize_arr[$ridk-1]); //将中奖项从数组中剔除,剩下未中奖项 
    shuffle($prize_arr); //打乱数组顺序 
    for($i=0;$i<count($prize_arr);$i++){ 
        $pr[] = $prize_arr[$i]['prize']; 
    } 
    $res['no'] = $pr;
    return $res;
    }
    dump(get_prize());

    博客园参考文章

    github参考源码

  • 相关阅读:
    OCS 2007 R2下载资源整理
    Windows Server 2012 R2 WSUS 4.0 加速
    JavaScript入门(三)
    JavaScript入门(一)
    JavaScript入门(二)
    CSS基础
    古董代码
    自我介绍
    Android Activity的加载的模式
    Android 数字签名
  • 原文地址:https://www.cnblogs.com/webclz/p/10712205.html
Copyright © 2020-2023  润新知