用于生成至少为2的随机数的函数

时间:2013-06-12 23:18:12

标签: php

我希望生成一系列随机数,这些数字与之前生成的数字相差至少2。我认为一个简单的函数可以自行调用 - 请参阅下面的代码......

function getRandomLength($previous){
    $x = rand(1,12);

    if(abs($x - $previous) > 2){
        return $x;
    } else {
        getRandomLength($previous);
    }
}

无论出于何种原因,这并不像我希望的那样。任何帮助将不胜感激。

感谢。

对于那些想知道为什么我想要稍微不同的随机数字的人,我正在构建一个套牌。我需要切割装饰板,我不希望关节排成一行,或者对它们有任何可感知的模式,因此,我转向我可靠的随机数发生器来帮助...

2 个答案:

答案 0 :(得分:1)

这里有两个问题:

function getRandomLength($previous){
    $x = rand(1,12);

    if(abs($x - $previous) > 2){

首先出现问题 - 当您的意思是> 2时使用>= 2,例如如果差异是两个或更多,则没关系。

        return $x;
    } else {
        getRandomLength($previous);

第二个问题在这里 - 你再次调用该方法,但是你没有返回调用它的结果,因此该方法的结果将是一个无用的null

此外,您不应该将方法编码为递归,它应该是迭代的,因为它不需要递归逻辑。

    }
}

答案 1 :(得分:-1)

由于您需要至少为2的偏移量,因此从0开始选择一个随机数并将其加2。由于它是一个偏移量,你将它添加到之前的值(但我相信你可以想出来)。