我希望生成一系列随机数,这些随机数与之前生成的数字至少有2个差异。我认为一个调用自身的简单函数将是一种方法-参见下面的代码……
function getRandomLength($previous){
$x = rand(1,12);
if(abs($x - $previous) > 2){
return $x;
} else {
getRandomLength($previous);
}
}不管出于什么原因,这并不是我所希望的那样。任何帮助都将不胜感激。
谢谢。
对于那些想知道为什么我想要稍微不同的随机数的人,我正在构建一个平台。我需要切割甲板,我不想让接头排成一行,也不想让它们有任何可感知的模式,因此,我求助于我值得信赖的随机数生成器来帮助解决……
发布于 2013-06-13 07:22:17
这里有两个问题:
function getRandomLength($previous){
$x = rand(1,12);
if(abs($x - $previous) > 2){第一个问题在这里-当你指的是>= 2时,你使用> 2,例如,如果差异是两个或更多,那么它是好的。
return $x;
} else {
getRandomLength($previous);第二个问题是-再次调用该方法,但没有返回调用结果,因此该方法的结果将是一个无用的null。
此外,您不应该将方法编码为递归的,它应该是迭代的,因为它不需要递归逻辑。
}
}发布于 2013-06-13 07:20:13
由于您需要至少2的偏移量,因此从0开始选取一个随机数,然后在其上加上2。由于它是一个偏移量,您可以将它添加到前一个值中(但我相信您可以弄清楚这一点)。
https://stackoverflow.com/questions/17076959
复制相似问题