カテゴリ: Java 更新日: 2026/02/19

JavaのRandom のnextDoubleメソッドの使い方!初心者でもわかる乱数生成

Random のnextDoubleメソッド
Random のnextDoubleメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaでランダムな少数を使いたいんですが、どう書けばいいんですか?」

先生

「それならRandomクラスのnextDoubleメソッドが便利です。Javaではこのクラスでいろいろな乱数を簡単に作れますよ。」

生徒

nextDoubleって何を返すんですか?」

先生

「0.0以上1.0未満のdouble型のランダムな値を返します。それじゃあ具体的な使い方を見ていきましょう!」

1. Randomクラスとは何か?

1. Randomクラスとは何か?
1. Randomクラスとは何か?

JavaのRandomクラスは、乱数を生成するためのクラスで、java.utilパッケージに含まれています。Randomクラスを使うと、整数・浮動小数点数・真偽値など、いろいろなランダムな値を簡単に生成できます。

ゲーム・統計・実験・演出など、ランダムな動作や判定が必要な場面でとてもよく使われる基本クラスです。

2. Randomクラスの使い方

2. Randomクラスの使い方
2. Randomクラスの使い方

まずRandomクラスを使うにはインスタンスを作成する必要があります。以下のように書いて準備します。


import java.util.Random;

public class RandomInit {
    public static void main(String[] args) {
        Random random = new Random();
    }
}

このようにインスタンス化すれば、さまざまなメソッドを使って乱数を得ることができるようになります。

3. nextDoubleメソッドとは?

3. nextDoubleメソッドとは?
3. nextDoubleメソッドとは?

nextDoubleメソッドは、JavaのRandomクラスが提供するメソッドのひとつで、0.0以上1.0未満のdouble型の値をランダムに生成します。

double型は高精度の浮動小数点数なので、精度を求める場面でとても役立ちます。

4. nextDoubleの基本的な使い方

4. nextDoubleの基本的な使い方
4. nextDoubleの基本的な使い方

それではnextDoubleメソッドを使ったサンプルを見てみましょう。


import java.util.Random;

public class DoubleRandomExample {
    public static void main(String[] args) {
        Random random = new Random();
        double value = random.nextDouble();
        System.out.println("ランダムなdouble値:" + value);
    }
}

このプログラムを実行すると、以下のように0.0以上1.0未満のランダムな小数が表示されます。


ランダムなdouble値:0.8743920482235817

5. nextDoubleの活用例

5. nextDoubleの活用例
5. nextDoubleの活用例

nextDoubleは、確率でイベントを分岐したいときなどに便利です。たとえば30%の確率で特別な処理を行いたい場合は、以下のように書きます。


import java.util.Random;

public class EventDecision {
    public static void main(String[] args) {
        Random random = new Random();
        double chance = random.nextDouble();
        if (chance < 0.3) {
            System.out.println("イベント発生!");
        } else {
            System.out.println("通常処理");
        }
    }
}

nextDoubleの値が0.3より小さい場合にイベントが発生する、という仕組みです。

6. 任意の範囲でdouble値を生成する方法

6. 任意の範囲でdouble値を生成する方法
6. 任意の範囲でdouble値を生成する方法

0.0以上1.0未満の範囲だけでなく、5.0〜10.0など任意の範囲の値をランダムに作りたいこともあります。その場合は以下のように計算します。


import java.util.Random;

public class RangeDoubleExample {
    public static void main(String[] args) {
        Random random = new Random();
        double min = 5.0;
        double max = 10.0;
        double value = random.nextDouble() * (max - min) + min;
        System.out.println("5.0〜10.0の乱数:" + value);
    }
}

この方法で、必要な範囲に合わせたランダムなdouble値を得ることができます。

7. nextDoubleとnextFloatの違い

7. nextDoubleとnextFloatの違い
7. nextDoubleとnextFloatの違い

nextFloatも似たメソッドですが、float型なので精度がdoubleよりも低くなります。精密な計算が必要な場合はnextDoubleを使いましょう。

nextFloatはメモリ消費が少ない利点があるため、用途に応じて使い分けることが大切です。

8. nextDoubleの注意点と対策

8. nextDoubleの注意点と対策
8. nextDoubleの注意点と対策

nextDoubleが返す値は常に1.0未満です。ですので== 1.0の条件で判定しようとしても絶対にtrueになりません。

また、少数の計算では誤差が出る可能性もあるので、比較にはMath.abs()BigDecimalなどの対策も検討しましょう。

9. まとめ

9. まとめ
9. まとめ

今回はJavaのRandomクラスにおけるnextDoubleメソッドについて詳しく学びました。nextDoubleは0.0以上1.0未満のdouble型の乱数を生成する非常に便利なメソッドであり、高精度なランダムな小数を必要とする場面では大活躍します。
このメソッドは、確率的な処理や統計的なシミュレーション、ゲームのイベント発生判定など、多くのプログラミング分野で利用されている基本中の基本です。

nextDoubleで得られる値は常に1.0未満であるため、== 1.0のような条件判定が成立しない点に注意が必要です。範囲を指定したdouble値を生成したい場合には、minmaxを使って値を変換する方法が使えます。

以下は0.0〜100.0の範囲でランダムなdouble値を出力するサンプルです。


import java.util.Random;

public class CustomDoubleRange {
    public static void main(String[] args) {
        Random random = new Random();
        double value = random.nextDouble() * 100.0;
        System.out.println("0〜100の乱数:" + value);
    }
}

このように、nextDoubleは掛け算や加算によって自由にカスタマイズできるため、幅広い用途に応用できます。
また、似たメソッドであるnextFloatとの違いも理解することで、メモリや精度のバランスを取った設計ができるようになります。
JavaにおけるRandomクラスとそのメソッド群を正しく使えるようになることは、ランダム性を扱うプログラム作成の第一歩です。

先生と生徒の振り返り会話

生徒

nextDoubleってすごく精度の高い乱数が取れるんですね。nextFloatよりも正確なんですか?」

先生

「そうですね。double型はfloatよりも桁数が多くて精密な計算に向いています。統計や科学計算などでは特に重要です。」

生徒

「0.0以上1.0未満だから、1.0ちょうどにはならないってところも注意点ですね。」

先生

「そうです。比較するときは== 1.0のような判定は避けて、必要なら< 1.0<= 0.9999など工夫が必要ですね。」

生徒

「範囲を広げたいときはnextDouble() * (max - min) + minの計算で調整するんですね!」

先生

「そのとおり。必要な範囲に応じて計算式を変えていけば、自由にランダムなdouble値を作ることができます。これでnextDoubleの基礎はばっちりですね!」

Javaの基礎を最初から体系的に学びたい人には、 初心者向けで定評のある定番入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Java
JavaのLocalDate.minusDaysの使い方を完全ガイド!初心者でもわかる日付操作
新規投稿
New2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「And」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Distinct」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.3
Java&Spring記事人気No3
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.4
Java&Spring記事人気No4
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.5
Java&Spring記事人気No5
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.6
Java&Spring記事人気No6
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.7
Java&Spring記事人気No7
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.8
Java&Spring記事人気No8
Thymeleaf
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク