PHP では、乱数の生成は、検証コード、データのランダム抽出、一意の識別子の生成など、開発において非常に一般的な操作です。PHP には、この機能を実装するためのさまざまな関数が用意されています。以下で詳しく学びましょう。
rand() は最も基本的な乱数生成関数であり、指定された範囲内でランダムな整数を生成できます。
$randomNumber = rand(0, 100); // 生成する0到着100間のランダムな整数rand() 関数は、高いランダム性を必要としない一般的なアプリケーションに適しています。
mt_rand() はメルセンヌ回転アルゴリズムに基づいており、生成される乱数は rand() よりも効率的でより均等に分散されます。
$randomNumber = mt_rand(0, 100); // 生成する0到着100間のランダムな整数ほとんどの場合、rand() の代わりに mt_rand() を使用することをお勧めします。
random_int()はPHP7で導入された関数です。指定された範囲内でランダムな整数を生成するために使用され、より高いセキュリティを備えています。これは、暗号化関連のアプリケーションに非常に適しています。
$randomNumber = random_int(0, 100); // 生成する0到着100間の安全なランダム整数暗号化キーやランダムな文字列を生成するなど、ランダムなバイト シーケンスを生成する必要がある場合は、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 はさまざまな乱数生成方法を提供しており、さまざまな関数がさまざまなシナリオに適しています。
適切な関数を選択すると、プログラムのセキュリティとパフォーマンスを向上させることができます。