🆚
[Java]Math.random()とRandomの違い
基本構文
-
random.nextInt(100) + 1
-
nextInt(100)
は0〜99
の整数を返す -
+1
することで1〜100
に変換
-
-
(int)(Math.random() * 100) + 1
-
Math.random()
は0.0〜1.0
(1.0
は含まない)のdouble
を返す -
*100
で0.0〜100.0
(100.0
は含まない) -
(int)
にキャストして0〜99
になる -
+1
で1〜100
に変換
-
// Randomクラスを使用
Random random = new Random();
int answer = random.nextInt(100) + 1;
// Math.random() を使用
int answer = (int)(Math.random() * 100) + 1;
違い
項目 |
Random クラス |
Math.random() |
---|---|---|
型 |
Random クラスのインスタンスが必要 |
static メソッドなのでそのまま使える |
戻り値の型 | 直接int を返す |
double を返す |
柔軟性・機能 | より多くの乱数生成機能がある | 単純な乱数生成(0.0以上1.0未満のdouble ) |
スレッドセーフ性 | スレッドセーフではない | スレッドセーフ |
シード設定 | 任意で設定可能 | シードを設定できない |
Discussion