2011-02-28 12 views
3

私はrand()を3回実行していますが、関数の可能性から最初の2つの結果を除外したいと思います。 1と5をヒットした場合と同様に、次のrand()で範囲から1と5を除外します。どうすればいい?rand()関数の数値を除外したPHP

+6

そして、それはもうかかわらランダムではありません。 :o) – deceze

+0

xkcdおよび/または4.の前に。ああ、また、 'rand'ではなく' mt_rand'を考慮してください。 – Charles

+0

@Charlesあなたは九、九、九、九、九、九を忘れています。 – deceze

答えて

5
についてどのように

do { 
    $rand_number = rand(); 

}while(in_array($rand_number, array(1,5)); 
0
$last[]; 

for ($i = 0; $i < 10; $i++) { 
    $min = getLow($last); 
    $max = getHigh($last); 

    $myrand = rand ($min, $max) 
    $last[i] = $myrand; 
} 

あなたは$を通じて最後の配列をitterate、あなたはそれを返すようにしたい変数を返すように二つの機能を構築する必要があります...またはあなただけの探している場合最後の2つについては、ループの外側で$ minと$ maxを初期化し、各反復でそれらを設定することができます。しかし、これはあなたのランダムな範囲を継続的に強化します。

別の解決策は、あなたが3つのユニークなランダム(ISH)の番号を生成したい場合は、あなたが使用することができ

$last; 
While (true) { 
    $myRand = rand(); 
    if ($myRand != $last) { 
    $last = $myRand; 
    break; 
    } 

} 
1

ことがあります

$totalNumsNeeded = 3; 
$randoms = array(); 
while (count($randoms) < $totalNumsNeeded) { 
    $random = rand($min, $max); 
    if (!in_array($random, $randoms)) { 
     $randoms[] = $random; 
    } 
} 
+0

これは非常に過小評価されています! :) – Legarndary

関連する問題