<?php /** 大炮从1-7级。鱼分大,中,小 7级炮打在 大中小鱼可以捕获成功的概率是 0.01 0.1 1 n级炮打在 大中小鱼可以捕获成功的概率是7级炮的 n/7 **/ function p($n,$base){ if($n==7){ return $base; } return ($n*$base)/7; } function hit($n,$type){ if($type=='s'){ if($n==7){ return 1; } $p = (int)round(p($n,1)*1000); } if($type=='m'){ $p = (int)round(p($n,0.1)*1000); } if($type=='b'){ $p = (int)round(p($n,0.01)*1000); } if(!isset($p)){ return 0; } $random = rand(1,1000); if($random <$p){ return 1; } return 0; } $hit_count=0; $n=10000; //测试1000次 for($i=0;$i<$n;$i++){ if(hit(6,'m')){ $hit_count++; } } $std = round(p(6,0.1)*$n); echo '测试'.$n.'次应该击中次数'.$std.' 生成击中次数 '.$hit_count.'<br>'; ?>