三个色子,每个色子为1至6点,如果要增大色子大于3点的机率,试试下面公式:
$r=rand(1,100);
$sezi=intval(sqrt($r)*6/10);
以上得到$sezi取值范围为1~6
因为$r>=50的机率和$r<50的机率相等。
而且intval(sqrt(45)*6/10)=4
这样等到$sezi>3的概率就要大些

解决方案 »

  1.   

    乱写的一个.大的是30%
    <?php
    for($i=0; $i<10;$i) 
    {
    $aa=rand(1,10);
    if($aa>5 and $bb1<3) 
    {
        $bb1++;
    $i++;
    $cc[]=$aa;
    }

    if($aa<4 and $bb2<7) 
    {
    $bb2++;
    $i++;
    $cc[]=$aa;
    }
    }foreach($cc as $key=>$val) {
    print $val."<br>";

    }
    ?>
      

  2.   

    有一个很简单明了的办法:数组法
    人为做一个数组(字符串),其中的数字就是你要输出的元素,但是有的元素可重复出现,重复的次数根据你想要的分布规律选
    用随机函数随机生成一个指向该数组(字符串)的下标(0..N-1, N 为长度),用下标取元素就OK了下面的例子,表示加大“大”的几率
    <?
    $BigSelection = "123456677788889999"
    $Result = $BigSelection[rand(0, strlen($BigSelection)-1)];
    ?>用这个方法,你可以做出任意的分布规律,例如“小”、“大”、“两头”、“中间”……
      

  3.   

    我的程序里的$bb1<3就是说他是30%的.你可以把他变成变量.
    你想概率是多少就是多少.