🆚

[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.01.0は含まない)のdoubleを返す
    • *1000.0〜100.0100.0は含まない)
    • (int)にキャストして0〜99になる
    • +11〜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