问题有点模糊,我先暂时把“保留两位小数”理解成“[输出的随机数]保留两位小数”,而非其他因素保留多少小数。
又把“1-10”,理解成包括1和10在内其两数之间的小数,
把10-50,理解成10.01到50.00之间的数,不包括10.00。以此类推。
function genRandom(){
$p=rand(1,100);
if($p<=60) $r=rand(100,1000);
elseif($p>60 and $p<=85) $r=rand(1001,5000);
elseif($p>85 and $p<=95) $r=rand(5001,10000);
else $r=rand(10001, 20000);
return $r/100;
}
$a=array();
$total=50000;
for($i=0;$i<$total;$i++){
$c=genRandom();
if($c>=1 and $c<=10) $p=0;
elseif($c>10 and $c<=50) $p=1;
elseif($c>50 and $c<=100) $p=2;
elseif($c>100 and $c<=200) $p=3;
else $p=4;
if(!array_key_exists($p, $a)) $a[$p]=1;
else $a[$p]++;
}
if(!array_key_exists(4, $a)) $a[4]=0;
echo "总样本数".$total.'
';
echo "1-10样本数".$a[0].', 占'.($a[0]/$total*100).'%
';
echo ">10-50样本数".$a[1].', 占'.($a[1]/$total*100).'%
';
echo ">50-100样本数".$a[2].', 占'.($a[2]/$total*100).'%
';
echo ">100-200样本数".$a[3].', 占'.($a[3]/$total*100).'%
';
echo "其他样本数".$a[4].', 占'.($a[4]/$total*100).'%
';
总样本数50000
1-10样本数30052, 占60.104%
>10-50样本数12404, 占24.808%
>50-100样本数4993, 占9.986%
>100-200样本数2551, 占5.102%
其他样本数0, 占0%