ホームページ >バックエンド開発 >PHPの問題 >PHPで非繰り返し数値のランダムな配列を作成する方法

PHPで非繰り返し数値のランダムな配列を作成する方法

PHPz
PHPzオリジナル
2023-04-18 14:10:43811ブラウズ

PHP は、Web アプリケーションの開発時に広く使用されているサーバー側スクリプト言語です。一般的なタスクは、反復しない数値のランダムな配列を作成することです。この記事では、PHP を使用してそのような配列を作成する方法を説明します。

その前に、rand()、array_push()、in_array() の 3 つの関数を理解する必要があります。 rand() 関数は擬似乱数の生成に使用され、array_push() 関数は配列の末尾に要素を追加するために使用され、in_array() 関数は要素が配列内にすでに存在するかどうかを確認するために使用されます。

ランダムで非繰り返しの数値の配列を作成するには、次の 2 つの方法があります。

方法 1: while ループと in_array() 関数を使用する

最初に、空の配列を作成します。生成された数値を保持する配列。次に、while ループを使用して数値を生成し、各数値を配列に追加します。ただし、配列に数値を追加する前に、in_array() 関数を使用して、その数値が配列内にすでに存在するかどうかを確認してください。番号がすでに存在する場合、ループは新しい番号が見つかるまで新しい番号の生成を続けます。

以下は、while ループと in_array() 関数を使用して、ランダムな非繰り返し数値の配列を作成するコード例です。

$numbers = array();
while (count($numbers) < 10) {
  $rand = rand(1, 20);
  if (!in_array($rand, $numbers)) {
    array_push($numbers, $rand);
  }
}
print_r($numbers);

この例では、10 を含む配列を作成します。要素。各ループでは、 rand() 関数を使用して 1 ~ 20 の疑似乱数を生成し、 in_array() 関数を使用してそれが配列内にすでに存在するかどうかを確認します。そうでない場合は、array_push() 関数を使用して配列の末尾に数値を追加します。配列の長さが 10 に達すると、ループは終了し、配列の内容が出力されます。

方法 2: for ループと shuffle() 関数を使用する

2 番目の方法は、for ループを使用して一連の数値を生成し、shuffle() 関数を使用してそれらをシャッフルすることです。この例では、 range() 関数を使用して一連の数値を含む配列を生成し、 shuffle() 関数を使用して配列内の要素をシャッフルします。初期配列には重複する数値がないため、このメソッドでは in_array() 関数を使用する必要はありません。

次は、for ループと shuffle() 関数を使用して、ランダムで非繰り返しの数値の配列を作成するコード例です。

$numbers = range(1, 20);
shuffle($numbers);
$numbers = array_slice($numbers, 0, 10);
print_r($numbers);

この例では、 range( ) 関数を使用して、1 ~ 20 の範囲の数値配列を生成します。次に、 shuffle() 関数を使用して、配列内の要素をシャッフルします。最後に、array_slice() 関数を使用して、配列から最初の 10 個の要素を非反復数値の配列として選択し、配列の内容を出力します。

概要

この記事では、PHP を使用してランダムな非反復数値の配列を作成する 2 つの方法を説明します。最初の方法では、while ループで in_array() 関数を使用して、数値が配列内にすでに存在するかどうかを確認し、重複しない数値を配列に追加します。 2 番目の方法では、for ループを使用して一連の数値を生成し、次に shuffle() 関数を使用して数値の順序を乱し、配列から最初の 10 個の要素を非繰り返し数値のランダムな配列として選択します。どちらの方法でも、一意の番号をランダムに生成するという目的を達成できますが、どちらの方法を使用するかは、個人の好みとアプリケーションの要件によって異なります。

以上がPHPで非繰り返し数値のランダムな配列を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。