Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】Random\Randomizer::getInt()メソッドの使い方

getIntメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

getIntメソッドは、指定された範囲内で暗号学的に安全な整数乱数を生成するメソッドです。このメソッドは、PHP 8.2で導入された新しい乱数生成機能を提供するRandom\Randomizerクラスに属しています。

Random\Randomizer::getIntメソッドを使用することで、信頼性の高い、予測不可能な乱数を簡単に取得できます。具体的には、int $minint $maxの二つの引数を受け取ります。$minは生成される乱数の最小値(この値を含む)を、$maxは最大値(この値を含む)を指定します。戻り値は、指定された$minから$maxまでの範囲に収まる整数型(int)の乱数です。

このメソッドで生成される乱数は、均一な分布を持ち、暗号学的に安全な乱数生成エンジン(例えばRandom\Engine\Secureなど)を利用して生成されるため、パスワード生成、トークン発行、ゲームの公平な抽選など、セキュリティが重要となる場面で特に推奨されます。従来のrand()mt_rand()関数と比較して、より現代的で安全な方法を提供し、予測が困難な高品質の乱数を必要とするアプリケーション開発において、非常に有用な選択肢となります。この機能を利用するには、まずRandom\Randomizerクラスのインスタンスを生成する必要があります。

構文(syntax)

1<?php
2
3$randomizer = new Random\Randomizer();
4$randomNumber = $randomizer->getInt(1, 100);

引数(parameters)

int $min, int $max

  • int $min: 取得する整数の最小値を指定します。
  • int $max: 取得する整数の最大値を指定します。

戻り値(return)

int

指定された範囲内のランダムな整数を返します。

サンプルコード

PHP 8: Randomizer::getInt で安全な乱数を生成する

1<?php
2
3/**
4 * Random\Randomizer::getInt メソッドを使用して、指定範囲の安全な乱数を生成するサンプルコードです。
5 * システムエンジニアを目指す初心者の方にも理解しやすいよう、基本的な使い方を簡潔に示します。
6 * このコードは PHP 8.2 以降で動作します。
7 */
8class RandomNumberGenerator
9{
10    /**
11     * 安全な乱数生成を行う Randomizer のインスタンス。
12     */
13    private Random\Randomizer $randomizer;
14
15    /**
16     * RandomNumberGenerator クラスのコンストラクタです。
17     * Random\Randomizer のインスタンスを初期化します。
18     * 引数なしの場合、デフォルトで暗号学的に安全な乱数エンジン (Random\Engine\Secure) が使用されます。
19     */
20    public function __construct()
21    {
22        $this->randomizer = new Random\Randomizer();
23    }
24
25    /**
26     * 指定された最小値 ($min) と最大値 ($max) の範囲内で、
27     * 安全な整数乱数を生成して標準出力に表示します。
28     *
29     * @param int $min 乱数の最小値 (この値を含む)
30     * @param int $max 乱数の最大値 (この値を含む)
31     * @return void
32     */
33    public function generateAndDisplayRandomInt(int $min, int $max): void
34    {
35        // Random\Randomizer::getInt メソッドを呼び出し、指定された範囲で乱数を生成します。
36        // このメソッドは、$min と $max を含む範囲で均一な乱数を返します。
37        $randomNumber = $this->randomizer->getInt($min, $max);
38
39        echo "指定された範囲 {$min} から {$max} の安全な乱数: {$randomNumber}" . PHP_EOL;
40    }
41
42    /**
43     * 指定された回数、乱数を生成して表示する例です。
44     * 複数の乱数を生成する際の動作を確認できます。
45     *
46     * @param int $min 乱数の最小値 (この値を含む)
47     * @param int $max 乱数の最大値 (この値を含む)
48     * @param int $count 生成する乱数の回数
49     * @return void
50     */
51    public function generateMultipleRandomInts(int $min, int $max, int $count): void
52    {
53        echo "--- 複数回の乱数生成例 ({$min} から {$max}, {$count}回) ---" . PHP_EOL;
54        for ($i = 1; $i <= $count; $i++) {
55            $randomNumber = $this->randomizer->getInt($min, $max);
56            echo "生成された乱数 " . $i . ": {$randomNumber}" . PHP_EOL;
57        }
58        echo "-----------------------------------" . PHP_EOL;
59    }
60}
61
62// -----------------------------------------------------------------------------
63// サンプルコードとして単体で動作させるための実行部分
64// -----------------------------------------------------------------------------
65
66// RandomNumberGenerator クラスのインスタンスを作成します。
67$generator = new RandomNumberGenerator();
68
69// 1. 基本的な乱数生成の例: 1から100の間の乱数を生成します。
70echo "--- 基本的な乱数生成の例 ---" . PHP_EOL;
71$generator->generateAndDisplayRandomInt(1, 100);
72// マイナスの値を含む範囲の乱数も生成できます。
73$generator->generateAndDisplayRandomInt(-50, 50);
74echo "--------------------------" . PHP_EOL . PHP_EOL;
75
76// 2. 複数回の乱数生成の例: 1から6の間の乱数 (サイコロの目をイメージ) を5回生成します。
77$generator->generateMultipleRandomInts(1, 6, 5);
78
79// 3. 別の範囲と回数で複数回生成する例: 1000から9999の間の乱数を3回生成します。
80$generator->generateMultipleRandomInts(1000, 9999, 3);
81
82?>

PHP 8.2以降で利用可能なRandom\Randomizer::getIntメソッドは、指定された整数範囲内で暗号学的に安全な乱数を生成するために使用します。このメソッドは、予測不可能な信頼性の高い乱数を手軽に取得できる点が特徴です。

この機能を使用するには、まずRandom\Randomizerクラスのインスタンスを作成します。このインスタンスが乱数生成の基盤となります。そして、作成したインスタンスからgetIntメソッドを呼び出します。

getIntメソッドには、二つの引数$min$maxを整数で指定します。$minは生成される乱数の最小値(この値を含む)、$maxは最大値(この値を含む)をそれぞれ表します。例えば、getInt(1, 100)と指定すると、1から100までの整数が均一にランダムに選ばれて返されます。

戻り値はint型で、指定された$min$maxの範囲内のランダムな整数となります。システムエンジニアを目指す方にとって、パスワード生成、セキュリティトークン発行、統計シミュレーションなど、信頼性のある乱数が必要な様々なアプリケーションでこのメソッドは非常に有効です。

このサンプルコードはPHP 8.2以降で動作するため、実行環境のPHPバージョンを確認してください。Random\Randomizer::getIntメソッドは、暗号学的に安全な乱数を生成する目的で設計されており、セキュリティが求められる場面での利用が推奨されます。引数 $min$max で指定する範囲は両端の数値を含みますので、意図する範囲になっているか確認が必要です。また、$minが$maxよりも大きい値を指定すると例外が発生するため、引数の順序と有効な範囲を常に意識してください。Random\Randomizerのインスタンスは一度作成すれば繰り返し使用でき、インスタンス生成時に特定の乱数エンジンを選択することも可能です。

PHP 8 Randomizer::getInt で乱数生成

1<?php
2
3// PHP 8.2 以降で利用可能な Random\Randomizer クラスを使用します。
4// このクラスは、セキュリティを考慮した安全な乱数を生成するために推奨されます。
5
6// Random\Randomizer のインスタンスを作成します。
7// これにより、デフォルトで安全な乱数エンジン(Random\Engine\Secure)が初期化されます。
8$randomizer = new Random\Randomizer();
9
10// 乱数を生成する範囲の最小値と最大値を定義します。
11// 例えば、1から100までの整数を生成したい場合。
12$min = 1;
13$max = 100;
14
15// Random\Randomizer::getInt() メソッドを使用して、
16// 指定された範囲($min と $max を含む)でランダムな整数を生成します。
17$randomNumber = $randomizer->getInt($min, $max);
18
19// 生成された乱数を表示します。
20echo "{$min} から {$max} の範囲で生成されたランダムな整数: " . $randomNumber . PHP_EOL;
21
22?>

PHPのRandom\Randomizer::getIntメソッドは、指定した範囲内で安全なランダムな整数を生成するために使用されます。このサンプルコードは、その具体的な使い方を示しています。

まず、PHP 8.2以降で導入されたRandom\Randomizerクラスのインスタンスを作成します。このクラスは、セキュリティを考慮した予測されにくい強力な乱数を生成する際に推奨される方法です。

次に、getIntメソッドに渡す二つの引数を定義します。一つ目のint $minは、生成したい乱数の最小値を整数で指定します。二つ目のint $maxは、最大値を整数で指定します。getIntメソッドは、$minから$maxまでの範囲(両端の値を含む)で、均等な確率でランダムな整数を選び出します。

そして、$randomizerインスタンスを通じてgetIntメソッドを呼び出し、$min$maxを引数として渡すことで乱数が生成されます。このメソッドの戻り値はint型で、生成されたランダムな整数です。

最終的に、echo文によって、設定した範囲と実際に生成された乱数の値が表示されます。この機能は、ゲームのサイコロの目や抽選番号、テストデータの生成など、さまざまな場面で活用できる基本的な乱数生成の手法です。

このコードはPHP 8.2以降で利用可能です。それより古いバージョンではRandom\Randomizerクラスが存在しないため動作しませんのでご注意ください。Random\Randomizerは、一般的な乱数生成関数よりもセキュリティを考慮した、予測されにくい安全な乱数を生成するために推奨されます。getIntメソッドは、引数で指定した最小値と最大値の両方の値を含む範囲で、ランダムな整数を返します。インスタンスを作成するだけでデフォルトで安全な乱数エンジンが使用されるため、追加の設定は不要です。セキュリティが重要な場面で安全な乱数を生成したい場合に活用してください。

関連コンテンツ