PHPのrandメソッドを使って乱数を生成する方法【初心者向け】

プログラミング初心者向けにPHPのrandメソッドを使って乱数を生成する方法について解説しています。ランダムな数字を多く取得したい場合に便利です。宝くじのように抽選で数字を選んだり、ゲームなど様々なシチュエーションで役立つはずです。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

randメソッドの使い方について解説しています。

数字をランダムで取得できるので、使い方をぜひ覚えておきましょう。

そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

乱数とは

乱数とは、ランダムな数字です。生成するたびに前回値とは、異なるランダム数字を取得することができます。

PHPでは、rand( )という乱数を生成する関数 (メソッド)が用意されており、この関数を使って乱数を発生することができます。

例えば、rand関数を1回実行すると、「10236」という数値が生成されます。また、2回目に実行すると「31472」というように異なった数値が生成されます。

ここでは、rand関数を使って、乱数を生成する方法を紹介します。

 

大石ゆかり

田島メンター!サイコロを振るような感じでランダムな値を生成する方法ってありますか?

田島悠介

それが今回紹介するrand関数なんだ。

大石ゆかり

ランダムな数値が取得できるんですか?

田島悠介

そうだね。ランダムな数値を元にして、ランダムな文章を表示することも出来るんだよ。さっそく書き方を見てみよう!

 

rand( )の書き方

1. 乱数を生成する。

説明

引数を指定しないでrand関数を実行すると、0以上で乱数の最大値以下の数値を返します。

乱数の最大値は、実行する環境によって異なるようです。

 

書式

rand( )

 

rand( )を引数なしで実行します。その都度、前回とは異なった乱数が生成されます。

 

2. 範囲を指定して乱数を生成する。

説明

乱数の範囲を指定することができます。rand関数の引数にnからmを設定して実行すると、nからmの範囲で乱数を発生します。

 

書式

rand(n,m)

n、m は、整数(n < m)

rand(0 , 12)のように、引数に数値範囲を指定します。実行するたびに、0から12で、前回とは異なった乱数が生成されます。

 

3. 奇数や偶数の乱数を発生させる。

説明

引数を2倍にしたり、2倍-1することにより、乱数を、偶数や奇数にしぼって発生させることができます。

 

書式

rand(n , m)*2      指定した範囲の偶数を生成する。
rand(n , m)*2-1    指定した範囲の奇数を生成する。

 

rand(1 , 50)*2 を実行すると、2から100までの偶数をランダムに生成します。
rand(1 , 50)*2-1 を実行すると、1から99までの奇数をランダムに生成します。

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

実際にrand( )を書いてみよう

それでは、実際にrand関数を使用して、WEB上に乱数を表示してみましょう。

ここでは、引数なしでrand関数を実行した場合と、範囲を指定してrand関数を実行した場合について、プログラムを作成してみました。

 

サンプルプログラム1(乱数の生成)

<?php
  echo'<p>','乱数が発生しました。','</p>';
  echo'<p>','1回目 乱数 = ',rand(),'</p>';
  echo'<p>','2回目 乱数 = ',rand(),'</p>';
  echo'<p>','3回目 乱数 = ',rand(),'</p>';
  echo'<p>','4回目 乱数 = ',rand(),'</p>';
?>

 

実行結果

64b36b2c1d4f8877b6389b1d591357b8

 

サンプルプログラム2(範囲指定された乱数の生成)

<?php
  echo'<p>','範囲指定された乱数が発生しました ( 0から12 ) 。','</p>';
  echo'<p>','1回目 乱数 = ',rand(0,12),'</p>';
  echo'<p>','2回目 乱数 = ',rand(0,12),'</p>';
  echo'<p>','3回目 乱数 = ',rand(0,12),'</p>';
  echo'<p>','4回目 乱数 = ',rand(0,12),'</p>';
?>

 

実行結果

34971b8cb35fcda0f336e7532b7283b9

 

おわりに

乱数を発生させることによって、52枚のトランプから任意の1枚を選ばせたり、簡単なじゃんけんゲームに応用したり、いろいろな使い方でできそうです。

たとえば、0,1,2の範囲で発生させた乱数に応じて、「グー」、「チョキ」、「パー」を表示するようなプログラムを作成すれば、ちょっとしたじゃんけんゲームができますよね。

 

大石ゆかり

ランダムな数値が出せるようになりました♪

田島悠介

数値を元にして配列の添え字$a[0]にすることも出来るんだよ。

大石ゆかり

何か応用に使えそうですね。

田島悠介

そうそう。異なるメッセージを出したり、用途は多いね。

 

また、PHPを勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。