カテゴリ: Java 更新日: 2025/12/14

JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成

Random クラス
Random クラス

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

生徒

「先生、Javaでランダムな数を作る方法ってありますか?」

先生

「Javaにはjava.utilパッケージに含まれているRandomクラスがあって、それを使えば簡単に乱数を作れますよ。」

生徒

「乱数ってゲームとか抽選のプログラムでも使われるやつですよね?」

先生

「その通りです。実際にどんな場面で役立つのか、そして使い方を一緒に見ていきましょう。」

1. Randomクラスとは?

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

JavaのRandomクラスは、プログラムで「ランダムな数」を作りたいときに使われるとても便利な機能です。例えばゲームで敵の出現場所をランダムに決めたり、占いアプリで今日の運勢をランダムに表示したりする場面で活躍します。

ここでいう乱数は、本当に完全なランダムではなく「疑似乱数」と呼ばれるものです。これは一定の計算手順によって作られるランダム風の数で、通常のアプリや学習用途では十分な精度があります。Randomクラスを使うには、最初にimport java.util.Random;を書いておき、必要なときにオブジェクトを作成して使います。

はじめての方でもイメージしやすいように、Randomクラスを使った簡単なサンプルを見てみましょう。


import java.util.Random;

public class SimpleRandomSample {
    public static void main(String[] args) {
        Random random = new Random();      // Randomクラスを準備
        int value = random.nextInt(5);     // 0〜4の乱数を生成
        System.out.println("ランダムな数: " + value);
    }
}

このように、とてもシンプルな書き方でランダムな数字を作れます。特にゲーム、抽選、シミュレーションなど、あらゆるプログラムで役立つので、まずは基本の仕組みを押さえておくと後の理解がぐっと楽になります。

2. Randomクラスの基本的な使い方

2. Randomクラスの基本的な使い方
2. Randomクラスの基本的な使い方

Randomクラスを使うときは、まずオブジェクトを生成します。基本的な書き方は次のようになります。


import java.util.Random;

public class RandomExample {
    public static void main(String[] args) {
        Random random = new Random();
        int number = random.nextInt(10); // 0から9までの乱数
        System.out.println("生成された乱数: " + number);
    }
}

このプログラムを実行すると、0から9までの範囲でランダムな整数が出力されます。


生成された乱数: 7

実行するたびに異なる数が表示されるのが特徴です。

3. 代表的なメソッド一覧

3. 代表的なメソッド一覧
3. 代表的なメソッド一覧

Randomクラスには、乱数を生成するためのさまざまなメソッドが用意されています。代表的なものを見ていきましょう。

  • nextInt():整数の乱数を返す
  • nextInt(int bound):0以上bound未満の整数を返す
  • nextDouble():0.0以上1.0未満の小数を返す
  • nextBoolean():trueかfalseをランダムに返す
  • nextLong():ランダムなlong型の数値を返す
  • nextFloat():ランダムなfloat型の数値を返す

4. nextIntの具体例

4. nextIntの具体例
4. nextIntの具体例

特定の範囲の乱数を作りたいときによく使うのがnextInt(int bound)です。例えば1から6までのサイコロをシミュレーションしてみましょう。


import java.util.Random;

public class DiceExample {
    public static void main(String[] args) {
        Random random = new Random();
        int dice = random.nextInt(6) + 1; // 1から6の乱数
        System.out.println("サイコロの目: " + dice);
    }
}

サイコロの目: 4

このように+1を加えることで、1から6までの範囲に調整できます。

5. nextDoubleの使い方

5. nextDoubleの使い方
5. nextDoubleの使い方

小数を扱いたいときにはnextDouble()を使います。0.0以上1.0未満のランダムな小数が返されるので、確率の計算やグラフィック処理などにも応用できます。


import java.util.Random;

public class DoubleExample {
    public static void main(String[] args) {
        Random random = new Random();
        double value = random.nextDouble();
        System.out.println("生成された小数: " + value);
    }
}

6. nextBooleanの使い方

6. nextBooleanの使い方
6. nextBooleanの使い方

nextBoolean()はtrueかfalseをランダムに返すので、コイントスのような処理に使えます。


import java.util.Random;

public class CoinToss {
    public static void main(String[] args) {
        Random random = new Random();
        boolean toss = random.nextBoolean();
        if (toss) {
            System.out.println("表が出ました");
        } else {
            System.out.println("裏が出ました");
        }
    }
}

7. シード値と再現性

7. シード値と再現性
7. シード値と再現性

Randomクラスには「シード値」という仕組みがあります。シード値を指定すると、毎回同じ乱数の並びを再現できます。これはテストやデバッグで非常に便利です。


import java.util.Random;

public class SeedExample {
    public static void main(String[] args) {
        Random random1 = new Random(12345);
        Random random2 = new Random(12345);
        System.out.println(random1.nextInt(100));
        System.out.println(random2.nextInt(100));
    }
}

同じ乱数が出力される

上記の例では、同じシード値を指定しているので、どちらのオブジェクトからも同じ数が生成されます。

8. Math.randomとの違い

8. Math.randomとの違い
8. Math.randomとの違い

JavaではMath.random()もよく使われますが、これは内部的にRandomクラスを利用しています。違いとしては、Math.random()は簡単に書ける反面、シードを制御したい場合やより複雑な処理をしたい場合にはRandomクラスを使うのが一般的です。

9. 応用例:配列からランダムに要素を選ぶ

9. 応用例:配列からランダムに要素を選ぶ
9. 応用例:配列からランダムに要素を選ぶ

Randomクラスを使えば、配列やリストからランダムに要素を選ぶことも可能です。


import java.util.Random;

public class ArrayPick {
    public static void main(String[] args) {
        String[] fruits = {"りんご", "みかん", "ぶどう", "バナナ"};
        Random random = new Random();
        String choice = fruits[random.nextInt(fruits.length)];
        System.out.println("選ばれた果物: " + choice);
    }
}

10. Randomクラスの注意点

10. Randomクラスの注意点
10. Randomクラスの注意点

Randomクラスはあくまで疑似乱数であるため、暗号処理やセキュリティが重要な場面では使ってはいけません。その場合はSecureRandomクラスを使います。初心者の学習や一般的なプログラムではRandomで十分ですが、安全性が必要なシステムでは注意しましょう。

まとめ

まとめ
まとめ

今回の記事ではJavaのRandomクラスを使った乱数生成の基本から応用までを体系的に学びました。乱数はゲームプログラム、テストデータの作成、シミュレーション、さらには暗号学的な処理など、幅広い場面で必要とされる機能です。初心者にとっては一見難しそうに感じるかもしれませんが、実際にはRandomクラスをインポートし、インスタンスを生成してメソッドを呼び出すだけで簡単に乱数を利用できることを理解できたと思います。

特にnextInt()を使えば整数乱数、nextDouble()nextFloat()を使えば小数乱数、nextBoolean()で真偽値を生成できる点は、実際の開発に直結する重要な知識です。さらに、ガウス分布に従う乱数を返すnextGaussian()など、統計的な処理や機械学習のサンプル生成でも役立つメソッドが用意されています。

よくあるエラーとしてnextInt(0)を呼び出したときに例外が発生するケースも紹介しました。引数にゼロを指定してはいけないという仕様を理解しておくことは、安定したプログラム作成の基本です。また、単純な一様乱数だけでなく、偏りや分布を意識することも大切であり、必要に応じてSecureRandomや外部ライブラリを検討する必要があることも覚えておきましょう。

以下に、応用例として「サイコロを振るプログラム」のサンプルを示します。この例はnextInt()を使って1から6の範囲の整数乱数を生成し、結果を出力します。


import java.util.Random;

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

        // 1から6までの乱数を生成
        int dice = random.nextInt(6) + 1;

        System.out.println("サイコロの出目は: " + dice);
    }
}

サイコロの出目は: 4

このようにプラス1を加えることで、範囲を0から始めるのではなく任意の値から開始できます。サイコロやカードゲームのシミュレーション、クイズのランダム出題など、多彩なプログラムに応用できます。

また、テストデータを自動生成するときにもRandomクラスは強力な味方になります。例えば、ユーザーIDやパスワードの候補をランダムに作る、ランダムな配列を生成してソート処理の検証に利用する、といった使い方が可能です。こうした小さな実験を繰り返すことで、プログラミングスキルは確実に伸びていきます。

初心者が意識しておくべき大事な点は、「ランダム値の範囲を正しく指定する」「偏りが生じる場合は分布を考える」「必要に応じて暗号学的乱数生成を使う」という三点です。これらを理解しておけば、Javaの乱数生成を安全かつ正確に使えるようになります。

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

生徒 「今日の学びで、JavaのRandomクラスを使えば整数も小数も簡単に乱数を作れることが分かりました!」

先生 「その通りです。サイコロやくじ引き、テストデータの作成など、幅広い場面で応用できますよ。」

生徒 「範囲を設定するにはnextInt(6) + 1のようにすればいいんですね。サイコロの出目のシミュレーションにぴったりだと思いました。」

先生 「とても良い理解ですね。範囲指定の工夫を覚えれば、実務でもすぐ役立ちます。」

生徒 「あと、ゼロを引数にするとエラーになる点も注意しなきゃいけないんですね。」

先生 「はい。仕様を正しく知っていれば未然に防げるエラーです。初心者のうちに覚えておくと安心です。」

生徒 「ガウス分布の乱数を出すnextGaussian()も気になりました。これって機械学習の実験とかで使えそうですね。」

先生 「その通りです。統計的な処理やシミュレーションでは欠かせないメソッドですから、ぜひ試してみてください。」

生徒 「次はSecureRandomも勉強して、安全な乱数生成にも挑戦したいです!」

先生 「素晴らしい意欲です。今回のRandomクラスの学びが、次のステップにつながりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaで乱数を作るにはRandomクラスだけを使えばいいのですか?

基本的な乱数生成にはRandomクラスで十分ですが、セキュリティ性が求められる処理ではSecureRandomの使用が推奨されます。
カテゴリの一覧へ
新着記事
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
SpringのBindingResult完全ガイド!初心者でもわかる入力チェックとgetTargetの使い方
Thymeleafのth:data-*属性を使いこなす!初心者向け完全解説
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
JSPとは何か?初心者向けにできること・仕組み・特徴をやさしく解説