举个例子:
我希望取到一个0-99随机数,这个随机数会有70%的几率取值范围为(0-49),另有30%的几率取值范围为(50-99),这种情况的话我应该怎么写?
回复讨论(解决方案)
echo t();
function t(){
$ab = array_merge(array_fill(0,7, 1),array_fill(0,3, 0));
shuffle($ab);
return $ab[array_rand($ab,1)] ? mt_rand(0, 49) : mt_rand(50, 99);
}
其实虽然有70%和30%
但每次都是随机,所以其实不太准的。
如果你要保证10次有7次0-49,3次50-99,可以使用pool来做。
绝对保证概率的写法,主要看你需求是否要严格控制。