今回は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;
- Math.random()によって0以上〜1未満の乱数が生成される
- 10を乗算することによって0以上〜10未満の乱数となる
- Math.floor()によって小数点以下を切り捨て(ここで0〜9のいずれかの整数になっている)
- 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