不同两个概率对应两个不同取值范围思路上应该怎么写?

举个例子:

我希望取到一个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来做。

绝对保证概率的写法,主要看你需求是否要严格控制。

Posted in 未分类

发表评论