【PHP】Lesson1-7:乱数生成の基本を理解しよう

ながみえ

一つ前のレッスンでは 文字列の連結と埋め込み について学習しました。

今回は 乱数生成 について見ていきましょう。

Lesson1:基礎文法編
 ・Lesson1-1:PHP学習の入り口|初めてコードを書いてみよう
 ・Lesson1-2:変数と定数を理解しよう
 ・Lesson1-3:データ型とキャストを理解しよう
 ・Lesson1-4:四則演算をしよう
 ・Lesson1-5:文字列を理解しよう
 ・Lesson1-6:文字列の連結と埋め込みを理解しよう
 ・Lesson1-7:乱数を生成しよう ◁今回はココ
 ・確認問題1-1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:関数編
Lesson4:データ構造編
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

PHPの乱数生成とは?基本と使い方を解説

PHPで乱数を生成する方法について、初心者にもわかりやすく解説します。

本記事では、mt_randとrandom_intの違いや、それぞれの使い方・安全性について丁寧に紹介。

これを学べば、抽選やランダムな値を使ったプログラムを安全に作成できるようになります。

ぜひ最後まで読んで、実践的な乱数生成のテクニックを身につけましょう!

乱数生成とは?|概要とよく使われる関数紹介

乱数生成とはプログラム内でランダムな値を作り出すことです。

この「ランダム」とは一定の範囲内で予測不可能な値を生成することを指します。

PHPでは乱数生成のためにいくつかの方法を提供しています。主に使用されるのは以下の関数です。

  • mt_rand (モダンな乱数生成器を使用)
  • rand (古い方法)
  • random_int (暗号論的に安全な乱数生成)

乱数生成の基本構文と作成例

以下はPHPの乱数生成に使う関数の基本構文です。

// mt_randを使用した乱数生成
$number = mt_rand($min, $max);

// randを使用した乱数生成
$number = rand($min, $max);

// random_intを使用した乱数生成
$secureNumber = random_int($min, $max);

$min$max は乱数生成範囲を指定する数値です。

例えばmt_rand(1, 100) とすると、1から100までのランダムな整数が生成されます。

サイコロを振ることを想定場合、以下のように書くことができます。

<?php
// 1から6までのランダムな整数を生成
$dice = mt_rand(1, 6);
echo "サイコロの目: " . $dice . PHP_EOL;

このコードはmt_rand 関数を使い、1から6までのランダムな整数を生成します。

まとめ

この記事では、PHPで乱数を生成する基本について解説しました。

これにより、用途に応じて安全に乱数を扱い、抽選やランダム処理を自分で実装できるようになったはずです。

基礎を押さえた今こそ、実際のコードで繰り返し試しながら、PHPのスキルをさらに伸ばしていきましょう!

演習問題|mt_randでランダムな数値を生成する練習

乱数を生成するプログラムを作成して、PHPで乱数生成を学びましょう。

指定された範囲の中でランダムな数値を生成し、その結果を出力します。

また、生成された乱数がどの範囲から選ばれたものかを日本語で説明してください。

この演習の要件

以下の要件に従ってコードを完成させてください。

  • 変数 $min に最小値を格納し、1を代入すること。
  • 変数 $max に最大値を格納し、100を代入すること。
  • mt_rand 関数を使用して $min から $max の間の乱数を生成し、結果を変数 $randomNumber に格納すること。
  • 生成された乱数を "乱数生成の結果は: X" の形式で出力すること (X は乱数)。
  • "この数値は $min から $max の間でランダムに選ばれました。" の形式で、乱数が選ばれた範囲を説明する文章を出力すること。

ただし、以下のような実行結果となること。

乱数生成の結果は: 42
この数値は 1 から 100 の間でランダムに選ばれました。

解き方のヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:乱数の最小値を1として定義
2:乱数の最大値を100として定義
3:mt_rand関数を使用して、指定された範囲の乱数を生成し、変数$randomNumberに代入
4:「乱数生成の結果は: 」と生成された乱数を連結して出力
5:「この数値は $min から $max の間でランダムに選ばれました。」と出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

<?php

// 乱数を生成するための最小値と最大値を定義します
$min = 1; // 最小値
$max = 100; // 最大値

// mt_rand関数を使って、指定した範囲の乱数を生成します
/*
【穴埋め問題1】ここで$minから$maxの間で乱数を生成し、変数$randomNumberに代入してください。
*/

// 結果を出力します
echo "乱数生成の結果は: " . $randomNumber . PHP_EOL;

// ユーザーに対して生成された乱数の説明を日本語で出力
echo "この数値は $min から $max の間でランダムに選ばれました。" . PHP_EOL;

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

演習問題の答え合わせ

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
<?php

// 乱数を生成するための最小値と最大値を定義します
$min = 1; // 最小値
$max = 100; // 最大値

// mt_rand関数を使って、指定した範囲の乱数を生成します
$randomNumber = mt_rand($min, $max);

// 結果を出力します
echo "乱数生成の結果は: " . $randomNumber . PHP_EOL;

// ユーザーに対して生成された乱数の説明を日本語で出力
echo "この数値は $min から $max の間でランダムに選ばれました。" . PHP_EOL;
Q
正解コードの解説

コードをブロックごとに分割して解説します。

最小値と最大値の設定

$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学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました