LoginSignup
0
1

More than 3 years have passed since last update.

JavaScript,PHP,Javaのrandom関数をまとめてみる

Last updated at Posted at 2021-01-15

今回はrandom関数を各言語ごとにまとめてみます。
なんでrandom関数なのかというとミニゲームなど作成時に使用する頻度が高く、好きな関数の一つだからです。
言語ごとに微妙に違いがあり、備忘録として記事にしておきます。

ちなみにrandom関数にもアルゴリズムがあるので「擬似乱数」であって、
「真乱数」ではないところに注意。

JavaScriptのMath.random()

JavaScriptのMath.random()関数は0以上1未満の値を返します。
※0は含むが1は含みません!

let num = Math.floor(Math.random() * n) + m;
// n = 上限値 , m = 下限値

Math.random()は浮動小数点で返ってきますので、Math.floor()で小数点以下を切り捨てます。
「n」は上限値を設定し、「m」で下限値を設定します。

例 ) 1〜10の乱数を生成する

let num = Math.floor(Math.random() * 10) + 1;
  1. Math.random()によって0以上〜1未満の乱数が生成される
  2. 10を乗算することによって0以上〜10未満の乱数となる
  3. Math.floor()によって小数点以下を切り捨て(ここで0〜9のいずれかの整数になっている)
  4. 1を足してあげることで1〜10のいずれかの整数が生成されます。

注意すべき点は1未満の数字を生成する点です。

PHPのrandom_int()

PHPで擬似乱数を生成するためにはrandom_int()関数を使用します。

$num = random_int(int $min, int $max);

第一引数に下限値を渡し、第二引数に上限値を渡します。
min〜maxを含む乱数を整数値で返します。

例 ) 1〜10の乱数を生成する

$num = random_int(1, 10);

指定した数値を含むので簡単ですね。

JavaのRandom()クラス

Javaではjava.utilパッケージにあるRandom()クラスとnextInt()メソッドを使用します。

int num = new java.util.Random().nextInt(n);

int型で返ってくるため変数はint型で宣言します。
nextInt()の引数が上限値となり、0〜上限値未満の値を返します。
JavaScriptと同じく指定した上限値自体は含みません!

例 ) 1〜10の乱数を生成する

public class Main {
 public static void main(String[] args) {
  int num = new java.util.Random().nextInt(10) + 1;
 }
}

上限値を含まない点に注意して値を渡しましょう。

まとめ

Javascript
0以上1未満の浮動小数点を生成。
Math.floor()とセットで覚える。

PHP
下限値、上限値指定した値を含む整数値を返す。

Java
Random()クラスを使用する。
nextInt()メソッドの引数に上限値を渡す。
0以上「上限値」未満の整数を返す。

こぼれ話

訓練校で「なぜ1未満なのか?」と先生に質問しました。
先生の答えはこうだった

「なぜでしょうね〜、、、」

何か意図があって1未満なのかなと思ったが、
そんなの言語作った人にしかわからんよな。と思いました。

それ以降、定義済の関数や変数、定数に疑問を抱くのはやめましたw

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1