假设a:20% b:30% c:50%
$r=rand(1,100)$r<=20 a获奖
20<$r<=(20+30) b获奖
(20+30)<=$r c获奖

解决方案 »

  1.   


    为什么不是这样写的??
    [code=php]
    $num = mt_rand(1, array_sum($arr));
    $tmp_num = 0;
    foreach($arr as $key => $value){
        if($num <= $value+$tmp_num){
            $n = $value;
            break;
        }
       
    }
      

  2.   


    这是一个思路,不是完整的代码。具体的实现和一下细节要你自己考虑,理解了思路代码很好写啊可以再讲下这个 get_rand的原理不~~ 我还是不懂 不懂啊不懂,为什么通过这个就能知道自己抽了什么奖。。
      

  3.   


    重要的是理解概率计算方法,不要管代码。假设a:20% b:30% c:50%
    $r=rand(1,100)$r有百分20的概率在1~20之间
    $r有百分30的概率在21~50之间
    $r有百分50的概率在51~100之间
      

  4.   


    重要的是理解概率计算方法,不要管代码。假设a:20% b:30% c:50%
    $r=rand(1,100)$r有百分20的概率在1~20之间
    $r有百分30的概率在21~50之间
    $r有百分50的概率在51~100之间
    重要的是理解概率计算方法,不要管代码。假设a:20% b:30% c:50%
    $r=rand(1,100)$r有百分20的概率在1~20之间
    $r有百分30的概率在21~50之间
    $r有百分50的概率在51~100之间
    重要的是理解概率计算方法,不要管代码。假设a:20% b:30% c:50%
    $r=rand(1,100)$r有百分20的概率在1~20之间
    $r有百分30的概率在21~50之间
    $r有百分50的概率在51~100之间
    重要的是理解概率计算方法,不要管代码。假设a:20% b:30% c:50%
    $r=rand(1,100)$r有百分20的概率在1~20之间
    $r有百分30的概率在21~50之间
    $r有百分50的概率在51~100之间嗯,这个我理解了  不过那么多人用的代码也应该有他的道理吧,不想就纠结了。。