我该如何创建一个随机数生成器,使其有偏好地在一定范围内生成数字? 比如我有这样的代码:
$rnum = rand(0,200);
如果下一次 $rnum == 3
,那么再下一次 $rnum == 106
,然后 $rnum == 10
,以此类推...
但我更希望有一个偏差范围,比如80-120,这样更可能选择在偏差范围内的数字而不是外部的数字。
$rnum == 86
,下一次是 $rnum == 112
,然后是$rnum == 93
,但仍然可以是 $rnum == 24
,以此类推...
我想我可以这样做:
if($rnum < $middle_of_bias){
$rnum++;
}else{
$rnum--;
}
但是实际上并没有起作用,因为如果在应用偏置之后 $rnum == 1
,它只会使其变成 2
,从而使这种方法不太成功。
谢谢你的帮忙。
编辑:大家的答案都很好。我真的很喜欢 gnur 的答案和 Phil H 的答案。我对 rmflow 的答案进行了修改,现在它按照我想要的方式工作了。 感谢所有帮助我的人!
if (rand(0, 10) > 2)
{
$rnum = rand($low, $high);
}else{
$rnum = rand(0, $max);
}