0

以前に生成された数と少なくとも 2 の差がある一連の乱数を生成しようとしています。自分自身を呼び出す単純な関数が適していると思いました-以下のコードを参照してください...

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

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

なんらかの理由で、これは私が望んでいた方法でうまくいきません。どんな助けでも大歓迎です。

ありがとう。

そして、なぜ少し違う乱数が必要なのか疑問に思っている人のために、私はデッキを構築しています. デッキ ボードを切断する必要があり、接合部が整列したり、知覚可能なパターンがあったりしたくないため、信頼できる乱数ジェネレーターに助けを求めます...

4

2 に答える 2

1

ここで 2 つの問題:

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

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

最初の問題はここにあります。たとえば、差が 2 つ以上ある場合は問題ありませ> 2ん。>= 2

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

2 番目の問題はここにあります。メソッドを再度呼び出しますが、呼び出しの結果が返されないため、メソッドの結果は un-useful になりnullます。

また、メソッドを再帰的にコーディングするべきではありません。再帰的なロジックを必要としないため、反復的である必要があります。

    }
}
于 2013-06-12T23:22:16.587 に答える
-1

少なくとも 2 のオフセットが必要なので、0 から始まる乱数を選び、それに 2 を加えます。これはオフセットなので、前の値に追加します (ただし、それを理解できると確信しています)。

于 2013-06-12T23:20:12.510 に答える