0

私は乱数を生成するためにこのphpスクリプトを作成しますが、私の問題、これらの数字は多くの場合繰り返され、繰り返しなしで異なる数字を取得しません

> <?php
> 
> $products=array("1","2","3","4","5","6","7","8","9","10");
> 
> for ($i=0;$i<count($products);$i++) {
> 
> $numbers_[$i]=rand(0,count($products));
> 
> if ($numbers_[$i]=="") { $numbers_[$i]="1"; } else { if
> ($numbers_[$i]>count($products)) { $numbers_[$i]=="10"; } else {
> 
> if ($numbers_[$i]==$numbers_[$i]) { $numbers_[$i]=="*"; }
> 
> 
> }
> 
> 
> }
> 
> 
> print "".$products[$numbers_[$i]]."<br>";
> 
> } ?>

常に5つの異なる数字を取得する必要があります.....

これが私の唯一の問題

ありがとうございます。それでは、お元気で

4

3 に答える 3

2

X個の可能な値を使用してX個の乱数を照会します。彼らは衝突するはずです。

if ($numbers_[$i]==$numbers_[$i])コードを理解するのは難しいですが、条件は常に正しいと思います。あなたは「5」の異なる番号が必要だと言いますが、その「5」はコードのどこにもありません、それで私はまだ部分を逃しているかもしれません...

$ productsの要素の順序をランダム化しようとしている場合は、shuffle()を試してください。

NとMの間の数値を取得するには(N <= M)ランダムに使用します$data=array(); for($i=N;$i<=M;++$i) $data[]=$i; $result=shuffle($data);

于 2012-11-08T01:49:04.657 に答える
2

異なる数字を求めている場合は、5 つの異なる数字が得られるまで乱数を生成し続けます。

生成する乱数ごとに、配列をチェックして、既にそれがあるかどうかを確認します。その場合は、配列に再度追加せずに生成を続けます。

PHPin_array() 関数を使用すると、値が既に配列に含まれているかどうかを簡単に確認できます。

于 2012-11-08T01:42:17.853 に答える
2

「 array_rand 」が必要です。

$products = array("1","2","3","4","5","6","7","8","9","10");
$rand_keys = array_rand($products, 5); // Get 5 Only

次に、返されたキーをループして、製品番号またはその他の詳細を出力できます。

foreach ($rand_keys as $key) {
    echo $products[$key];
}
于 2012-11-08T01:53:07.330 に答える