【PHP8.x】random_int関数の使い方

random_int関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

random_int関数は、指定された範囲内で暗号学的に安全な疑似乱数(整数)を生成する関数です。この関数は、引数として乱数の最小値と最大値を整数で受け取り、その範囲内の予測困難な整数を返します。例えば、1から100までのランダムな数が必要な場合、random_int(1, 100)のように使用します。

このrandom_int関数が生成する乱数は、一般的なrand()関数やmt_rand()関数とは異なり、予測が非常に困難です。そのため、パスワード、セキュリティトークン、暗号鍵の生成など、セキュリティが極めて重要となる場面では本関数の利用が不可欠です。予測可能な乱数はセキュリティ上の弱点となるため、機密情報を扱う際には、この関数を選択することが必須です。

本関数は、オペレーティングシステムが提供する信頼性の高い乱数生成源を利用し、高品質な乱数を提供します。引数に無効な値が渡された場合や、安全な乱数を生成できない状況では、例外を発生させ処理を停止します。これにより、予期せぬ動作を防ぎ、堅牢なアプリケーション開発を支援します。

構文(syntax)

1<?php
2
3$randomNumber = random_int(1, 100);
4echo $randomNumber;
5
6?>

引数(parameters)

int $min, int $max

  • int $min: 生成する乱数の最小値
  • int $max: 生成する乱数の最大値

戻り値(return)

int

指定された範囲内で生成された、暗号学的に安全なランダムな整数を返します。

サンプルコード

PHPで指定範囲の乱数整数を生成する

1<?php
2
3/**
4 * 指定された範囲の乱数を生成する
5 *
6 * @param int $min 最小値 (含む)
7 * @param int $max 最大値 (含む)
8 * @return int 生成された乱数
9 * @throws Exception 乱数生成に失敗した場合
10 */
11function generateRandomInteger(int $min, int $max): int
12{
13  try {
14    return random_int($min, $max);
15  } catch (Exception $e) {
16    // 乱数生成に失敗した場合の処理
17    error_log("乱数生成エラー: " . $e->getMessage());
18    throw $e; // 例外を再スロー
19  }
20}
21
22// 使用例
23try {
24  $randomNumber = generateRandomInteger(1, 100);
25  echo "生成された乱数: " . $randomNumber . PHP_EOL;
26} catch (Exception $e) {
27  echo "エラーが発生しました: " . $e->getMessage() . PHP_EOL;
28}

PHPのrandom_int関数は、指定された範囲内の暗号学的に安全な乱数を生成するために使用されます。この関数は、予測不可能な乱数を必要とする場面、例えばパスワード生成やセキュリティ関連の処理などに適しています。

サンプルコードでは、generateRandomIntegerという独自の関数を定義し、random_int関数をラップしています。この関数は、$min$maxという2つの整数型の引数を受け取ります。$minは乱数の最小値(これを含む)、$maxは乱数の最大値(これも含む)を指定します。

random_int関数は、指定された範囲内の乱数を整数型(int)で返します。もし乱数生成に失敗した場合、Exceptionが発生する可能性があります。

サンプルコードでは、try...catchブロックを使用して例外処理を行っています。random_int関数が例外をスローした場合、catchブロック内でエラーログを出力し、例外を再スローすることで、上位の呼び出し元にエラーを伝えます。

使用例では、generateRandomInteger(1, 100)を呼び出し、1から100までの乱数を生成しています。生成された乱数は$randomNumber変数に格納され、画面に出力されます。例外が発生した場合も、エラーメッセージが画面に出力されます。PHP_EOLは改行コードを表し、出力結果を見やすくするために使用しています。random_int関数は、より安全な乱数が必要な場合に使用されるべき関数です。

random_int関数は、暗号学的に安全な乱数を生成します。rand関数などよりも予測が難しく、セキュリティが重要な場面で推奨されます。引数には最小値$minと最大値$maxを整数で指定します。範囲は両端を含みます。

例外処理は必ず記述しましょう。乱数生成に失敗した場合(システムのリソース不足などが原因)、Exceptionが発生する可能性があります。サンプルコードのようにtry-catchブロックで囲み、エラー発生時の処理を記述することで、プログラムが予期せぬ停止をするのを防ぎます。

error_logでエラー内容を記録しておくと、問題発生時の原因究明に役立ちます。また、必要に応じて例外を再スローすることで、呼び出し元にエラーを通知できます。

PHP random_intで指定範囲の乱数を生成する

1<?php
2
3/**
4 * 指定された範囲の乱数を生成するサンプルコード
5 */
6function generateRandomInteger(int $min, int $max): int
7{
8  try {
9    // random_int 関数を使用して、指定された範囲の安全な乱数を生成します。
10    $randomInt = random_int($min, $max);
11    return $randomInt;
12  } catch (Exception $e) {
13    // 乱数生成に失敗した場合、エラーメッセージを表示して -1 を返します。
14    error_log("Failed to generate random integer: " . $e->getMessage());
15    return -1;
16  }
17}
18
19// 最小値と最大値を設定します。
20$min = 1;
21$max = 100;
22
23// 乱数を生成します。
24$randomNumber = generateRandomInteger($min, $max);
25
26// 生成された乱数を表示します。
27if ($randomNumber !== -1) {
28  echo "生成された乱数: " . $randomNumber . PHP_EOL;
29} else {
30  echo "乱数の生成に失敗しました。" . PHP_EOL;
31}
32?>

このPHPのサンプルコードは、random_int関数を使用して、指定された範囲の安全な乱数を生成する方法を示しています。random_int関数は、暗号学的に安全な擬似乱数ジェネレータを使用しており、予測が困難な乱数を生成するのに適しています。

random_int関数は、2つの整数型の引数 $min$max を受け取ります。$min は乱数の最小値を、$max は乱数の最大値を指定します。この関数は、$min 以上 $max 以下の整数型の乱数を返します。

サンプルコードでは、generateRandomIntegerという関数を定義し、この関数内でrandom_int関数を呼び出しています。generateRandomInteger関数も $min$max を引数として受け取り、生成された乱数を返します。

乱数生成に失敗した場合(例えば、$min$max より大きい場合など)、random_int関数は例外をスローします。サンプルコードでは、try-catch ブロックを使用してこの例外をキャッチし、エラーログにメッセージを出力した後、-1を返しています。

最後に、生成された乱数が -1 でない場合(つまり、正常に乱数が生成された場合)、生成された乱数を表示します。-1 の場合は、乱数生成に失敗した旨のメッセージを表示します。このサンプルコードは、指定範囲内の安全な乱数を生成し、その結果を適切に処理する方法を理解するのに役立ちます。

random_int関数は、暗号学的に安全な乱数を生成するために使用します。rand関数などよりも予測が難しく、セキュリティが重要な場面で推奨されます。引数 $min$max で乱数の範囲を指定しますが、$min$max より小さい必要があります。範囲外の値を指定すると例外が発生します。サンプルコードでは、例外処理を用いて乱数生成の失敗に備えています。エラー発生時には、原因を特定するためにエラーログを確認することが重要です。また、戻り値が-1の場合、乱数生成に失敗したことを示しますので、適切に処理する必要があります。

関連コンテンツ