【PHP】Lesson1-7:乱数を生成する基本|mt_rand・random_intの使い方

プログラミングでは、ランダムな値を生成する機能が必要になることがあります。
例えばゲームでサイコロの目を作ったり、抽選を行ったりする場合に乱数生成が使われます。
本節ではPHPで乱数を生成する方法について学びます。
Lesson1:基礎文法編
・Lesson1-1:PHP学習の入り口|初めてコードを書いてみよう
・Lesson1-2:変数と定数を理解しよう
・Lesson1-3:データ型とキャストを理解しよう
・Lesson1-4:四則演算をしよう
・Lesson1-5:文字列を理解しよう
・Lesson1-6:文字列の連結と埋め込みを理解しよう
・Lesson1-7:乱数を生成しよう ◁今回はココ
・確認問題1-1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:関数編
Lesson4:データ構造編
Lesson5:クラス編
乱数生成とは?

乱数生成とはプログラム内でランダムな値を作り出すことです。
この「ランダム」とは一定の範囲内で予測不可能な値を生成することを指します。
PHPでは乱数生成のためにいくつかの方法を提供しています。主に使用されるのは以下の関数です。
mt_rand
(モダンな乱数生成器を使用)rand
(古い方法)random_int
(暗号論的に安全な乱数生成)
乱数生成の基本構文
以下はPHPの乱数生成に使う関数の基本構文です。
// mt_randを使用した乱数生成 $randomNumber = mt_rand($min, $max); // randを使用した乱数生成 $randomNumber = rand($min, $max); // random_intを使用した乱数生成 $secureRandomNumber = random_int($min, $max);
$min
と $max
は乱数生成範囲を指定する数値です。
例えばmt_rand(1, 100)
とすると、1から100までのランダムな整数が生成されます。
乱数生成の使用例
<?php // 1から10までのランダムな整数を生成 $randomNumber = mt_rand(1, 10); echo "生成された乱数: " . $randomNumber . PHP_EOL;
このコードはmt_rand
関数を使い、1から10までのランダムな整数を生成します。
PHPでの乱数生成の学習まとめ
乱数生成はプログラミングで頻繁に使われる重要な機能です。
PHPでは mt_rand
や random_int
を使うことで、用途に応じた乱数生成が可能です。
本節で学んだ知識を活用して、ぜひさまざまなプログラムに応用してみてください。
演習問題|mt_randでランダムな数値を生成する練習

乱数を生成するプログラムを作成して、PHPで乱数生成を学びましょう。
指定された範囲の中でランダムな数値を生成し、その結果を出力します。
また、生成された乱数がどの範囲から選ばれたものかを日本語で説明してください。
この演習の要件
以下の要件に従ってコードを完成させてください。
- 変数
$min
に最小値を格納し、1を代入すること。 - 変数
$max
に最大値を格納し、100を代入すること。 mt_rand
関数を使用して$min
から$max
の間の乱数を生成し、結果を変数$randomNumber
に格納すること。- 生成された乱数を
"乱数生成の結果は: X"
の形式で出力すること (X
は乱数)。 "この数値は $min から $max の間でランダムに選ばれました。"
の形式で、乱数が選ばれた範囲を説明する文章を出力すること。
ただし、以下のような実行結果となること。
乱数生成の結果は: 42 この数値は 1 から 100 の間でランダムに選ばれました。
解き方のヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:乱数の最小値を1として定義
2:乱数の最大値を100として定義
3:mt_rand関数を使用して、指定された範囲の乱数を生成し、変数$randomNumberに代入
4:「乱数生成の結果は: 」と生成された乱数を連結して出力
5:「この数値は $min から $max の間でランダムに選ばれました。」と出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
<?php // 乱数を生成するための最小値と最大値を定義します $min = 1; // 最小値 $max = 100; // 最大値 // mt_rand関数を使って、指定した範囲の乱数を生成します /* 【穴埋め問題1】ここで$minから$maxの間で乱数を生成し、変数$randomNumberに代入してください。 */ // 結果を出力します echo "乱数生成の結果は: " . $randomNumber . PHP_EOL; // ユーザーに対して生成された乱数の説明を日本語で出力 echo "この数値は $min から $max の間でランダムに選ばれました。" . PHP_EOL;
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
演習問題の答え合わせ
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
<?php // 乱数を生成するための最小値と最大値を定義します $min = 1; // 最小値 $max = 100; // 最大値 // mt_rand関数を使って、指定した範囲の乱数を生成します $randomNumber = mt_rand($min, $max); // 結果を出力します echo "乱数生成の結果は: " . $randomNumber . PHP_EOL; // ユーザーに対して生成された乱数の説明を日本語で出力 echo "この数値は $min から $max の間でランダムに選ばれました。" . PHP_EOL;
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
最小値と最大値の設定
$min = 1; // 最小値 $max = 100; // 最大値
ここでは乱数生成に使用する範囲を定義しています。
$min
: 乱数の最小値として設定される変数です。このコードでは1が代入されています。$max
: 乱数の最大値として設定される変数です。このコードでは100が代入されています。
乱数の生成
$randomNumber = mt_rand($min, $max);
mt_rand($min, $max)
は指定された範囲(ここでは$min
から$max
)の間でランダムな整数を生成する関数です。- この関数の結果は変数
$randomNumber
に格納されます。
結果の出力
echo "乱数生成の結果は: " . $randomNumber . PHP_EOL;
echo
は指定した文字列や値を画面に表示するためのPHPの基本的な出力機能です。PHP_EOL
は改行を表します。
乱数範囲の説明を出力
echo "この数値は $min から $max の間でランダムに選ばれました。" . PHP_EOL;
- この部分では生成された乱数がどの範囲から選ばれたかを表示しています。
- ダブルクォーテーション内で変数(例:
$min
や$max
)を使うと、その値が自動的に文字列に埋め込まれます。
まとめ
このコードではPHPの基本的な文法(変数、関数、文字列の埋め込み)を使いながら、乱数生成について学びました。
乱数生成はゲームやシミュレーション、データ生成など、さまざまな場面で活用されます。