現在の位置: ホーム> 最新記事一覧> PHPで乱数を生成する様々な方法と具体例を詳しく解説

PHPで乱数を生成する様々な方法と具体例を詳しく解説

M66 2025-10-28

PHP で乱数を生成する一般的な方法

PHP では、乱数の生成は、検証コード、データのランダム抽出、一意の識別子の生成など、開発において非常に一般的な操作です。PHP には、この機能を実装するためのさまざまな関数が用意されています。以下で詳しく学びましょう。

rand()関数の使用

rand() は最も基本的な乱数生成関数であり、指定された範囲内でランダムな整数を生成できます。

 $randomNumber = rand(0, 100); // 生成する0到着100間のランダムな整数

rand() 関数は、高いランダム性を必要としない一般的なアプリケーションに適しています。

mt_rand() 関数を使用する

mt_rand() はメルセンヌ回転アルゴリズムに基づいており、生成される乱数は rand() よりも効率的でより均等に分散されます。

 $randomNumber = mt_rand(0, 100); // 生成する0到着100間のランダムな整数

ほとんどの場合、rand() の代わりに mt_rand() を使用することをお勧めします。

random_int() 関数の使用

random_int()はPHP7で導入された関数です。指定された範囲内でランダムな整数を生成するために使用され、より高いセキュリティを備えています。これは、暗号化関連のアプリケーションに非常に適しています。

 $randomNumber = random_int(0, 100); // 生成する0到着100間の安全なランダム整数

random_bytes() 関数の使用

暗号化キーやランダムな文字列を生成するなど、ランダムなバイト シーケンスを生成する必要がある場合は、random_bytes() を使用できます。

 $bytes = random_bytes(16); // 生成する16ランダムなバイト列

一連のバイトは、bin2hex() を介して読み取り可能な 16 進文字列に変換できます。

浮動小数点乱数を生成する

PHP には組み込みのrandom_float() 関数がありませんが、ランダムな浮動小数点数の生成は簡単な計算で実現できます。

 $randomFloat = mt_rand() / mt_getrandmax(); // 生成する0到着1間のランダムな浮動小数点数

暗号的に安全な乱数を生成する

アプリケーションにトークンやセッション キーの生成など、非常に高度なセキュリティ要件がある場合は、 openssl_random_pseudo_bytes() を使用できます。

 $secureBytes = openssl_random_pseudo_bytes(32); // 生成する32安全なランダムなバイトシーケンス

要約する

PHP はさまざまな乱数生成方法を提供しており、さまざまな関数がさまざまなシナリオに適しています。

  • 通常の乱数: rand() または mt_rand()
  • 安全なランダム整数:random_int()
  • 安全なランダムバイト:random_bytes() または openssl_random_pseudo_bytes()

適切な関数を選択すると、プログラムのセキュリティとパフォーマンスを向上させることができます。