カテゴリ: Java 更新日: 2026/04/12

JavaのRandomのnextメソッドの使い方を完全ガイド!初心者でもわかる乱数生成

Random のnextメソッド
Random のnextメソッド

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

生徒

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

先生

「JavaにはRandomクラスという便利なクラスがあります。乱数を簡単に作ることができますよ。」

生徒

「乱数って、例えば0から9までの数字を適当に出すみたいなことですか?」

先生

「その通りです。では今回は、Randomクラスとnextメソッドの基本から解説しましょう!」

1. Randomクラスとは?

「1. Randomクラスとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

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

JavaのRandomクラスは、疑似乱数と呼ばれるランダムな値を生成するためのクラスです。乱数とは、毎回異なるように見える予測できない数のことです。ゲームや抽選、シミュレーションなど、ランダム性が必要な処理でよく使われます。

このクラスはjava.utilパッケージに含まれており、import java.util.Random;と書くことで使用できます。

2. Randomクラスの使い方

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

Randomクラスのインスタンスを生成し、そこからさまざまなメソッドを使ってランダムな値を得ることができます。たとえば、nextInt(int bound)メソッドを使うと、0以上bound未満の整数を取得できます。


import java.util.Random;

public class RandomExample {
    public static void main(String[] args) {
        Random random = new Random();
        int num = random.nextInt(10); // 0〜9の整数をランダムに生成
        System.out.println("ランダムな整数:" + num);
    }
}

3. nextメソッドの仕組み

3. nextメソッドの仕組み
3. nextメソッドの仕組み

nextメソッドは、Randomクラスの基盤となる内部メソッドです。next(int bits)と書いて、指定したビット数のランダムな値を返します。通常、開発者が直接使うことは少ないですが、nextInt()nextDouble()などのメソッドが内部でこのnextメソッドを呼び出しています。

つまり、nextRandomクラスの中核をなすメソッドで、すべての乱数生成の元となる動作を行っています。

4. nextメソッドを直接使うには?

「4. nextメソッドを直接使うには?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. nextメソッドを直接使うには?
4. nextメソッドを直接使うには?

nextメソッドはprotectedで定義されているため、直接使うにはRandomクラスを継承したクラスを作成する必要があります。


import java.util.Random;

public class MyRandom extends Random {
    public int getNextBits(int bits) {
        return next(bits);
    }

    public static void main(String[] args) {
        MyRandom myRandom = new MyRandom();
        int value = myRandom.getNextBits(5); // 5ビットのランダム値
        System.out.println("5ビットのランダム値:" + value);
    }
}

5. Randomクラスで使える主なメソッド

5. Randomクラスで使える主なメソッド
5. Randomクラスで使える主なメソッド
  • nextInt():int型のランダム値を返す
  • nextInt(int bound):0以上bound未満のランダムな整数
  • nextDouble():0.0以上1.0未満のランダムな小数
  • nextBoolean():trueかfalseをランダムに返す
  • nextFloat():0.0f以上1.0f未満のfloat型ランダム値
  • setSeed(long seed):シード値を指定して再現性のある乱数生成

これらのメソッドはどれも、nextメソッドを内部で使用して乱数を作り出しています。

6. シード値と乱数の再現性

6. シード値と乱数の再現性
6. シード値と乱数の再現性

Randomクラスでは、シード(種)を指定することで、同じ乱数の列を再現することができます。これは、テストや検証に便利な機能です。


import java.util.Random;

public class SeedExample {
    public static void main(String[] args) {
        Random random = new Random(100); // シード値を指定
        System.out.println(random.nextInt(10));
        System.out.println(random.nextInt(10));
    }
}

3
7

同じシード値を使えば、何度実行しても同じ結果になります。

7. RandomクラスとMath.random()の違い

「7. RandomクラスとMath.random()の違い」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. RandomクラスとMath.random()の違い
7. RandomクラスとMath.random()の違い

JavaではMath.random()を使ってもランダムな値を生成できますが、Randomクラスの方がより多機能です。Math.random()は実は内部的にRandomクラスを使っています。

例えば、nextBoolean()nextInt(int bound)など、特定の形式の乱数を使いたいときはRandomクラスの方が使いやすく、柔軟性があります。

8. Randomクラスを使った実践的な活用例

8. Randomクラスを使った実践的な活用例
8. Randomクラスを使った実践的な活用例

JavaのRandomクラスは、基本的な乱数生成だけでなく、実際のアプリケーションでも幅広く活用されています。例えば、ゲームのサイコロ処理やくじ引き、ランダムなパスワード生成など、さまざまな場面で利用されます。

特に初心者の方は、単に乱数を出力するだけでなく、プログラムのロジックと組み合わせて使うことで、より実践的なスキルを身につけることができます。ここでは、簡単なサイコロのプログラムを例に見ていきましょう。


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

このように、nextIntメソッドに値を指定し、さらに数値を加算することで、任意の範囲の乱数を生成することができます。Javaの乱数処理はこのような考え方が基本になります。

また、配列と組み合わせることでランダムに要素を取り出すことも可能です。これにより、より複雑な処理にも対応できるようになります。


import java.util.Random;

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

このような応用を通して、Randomクラスの使い方に慣れていくことで、実際の開発に近い処理を自然に書けるようになります。初心者の方はまず基本を押さえ、その後に応用例を少しずつ試していくことが大切です。

9. Randomクラス使用時の注意点とよくあるミス

9. Randomクラス使用時の注意点とよくあるミス
9. Randomクラス使用時の注意点とよくあるミス

JavaのRandomクラスを使う際には、いくつか注意しておきたいポイントがあります。初心者の方がよくつまずく部分を理解しておくことで、より正確に乱数を扱えるようになります。

まず一つ目は、nextIntの引数の扱いです。nextInt(10)と書いた場合、0以上10未満の値が返されるため、10は含まれません。この仕様を理解していないと、期待した範囲の数値が出ない原因になります。

例えば、1から10までの整数を生成したい場合は、次のように記述する必要があります。


import java.util.Random;

public class RandomRangeExample {
    public static void main(String[] args) {
        Random random = new Random();
        int num = random.nextInt(10) + 1; // 1から10
        System.out.println("乱数:" + num);
    }
}

二つ目のポイントは、毎回新しくRandomオブジェクトを生成しないことです。ループの中で何度もインスタンスを生成すると、同じような値が出やすくなることがあります。そのため、基本的には一度生成したRandomを使い回すようにしましょう。


import java.util.Random;

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

        for (int i = 0; i < 5; i++) {
            System.out.println(random.nextInt(100));
        }
    }
}

さらに、乱数は完全にランダムではなく、疑似的に生成されている点も重要です。これは内部的に一定の規則に基づいて値が作られているためですが、通常のプログラムでは問題になることはほとんどありません。

これらのポイントを理解しておくことで、JavaのRandomクラスをより正しく、安全に使うことができるようになります。初心者の方は、細かい仕様にも少しずつ慣れていくことが大切です。

まとめ

「まとめ」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

まとめ
まとめ

Javaで乱数を生成する方法として非常に便利なRandomクラスについて、今回は基礎から応用まで丁寧に解説しました。Randomクラスは、ゲーム開発抽選プログラムシミュレーションテストデータの生成など幅広い用途で使われる重要なクラスです。特に、乱数が毎回違ってほしい場合も、逆にsetSeedで同じ結果を得たい場合にも対応できる柔軟な仕組みを持っています。

Randomクラスでは、nextInt()nextDouble()nextBoolean()など多彩なメソッドを使って、さまざまな形式の乱数を簡単に生成できます。また、内部的にはnext(int bits)というprotectedメソッドが利用されており、これがRandomクラスの中核を担っています。普段直接触れる機会は少ないですが、カスタマイズが必要なときは継承して使うことも可能です。

ランダム性の重要なポイントは、「予測できない結果」だけでなく、「同じ結果を再現できる制御性」も必要だという点です。そのため、Randomクラスでは、setSeedメソッドやnew Random(long seed)といった機能が用意されており、シード値を固定して同じ乱数列を得ることができます。これは、テストやデバッグでとても便利です。

実際の使用例として、以下のようなサンプルコードがあります。これは、同じシード値を使って何度でも同じ結果を得られる例です。


import java.util.Random;

public class FixedRandom {
    public static void main(String[] args) {
        Random random = new Random(1234L); // シード値を固定
        for (int i = 0; i < 5; i++) {
            System.out.println(random.nextInt(100)); // 0〜99の乱数
        }
    }
}

14
12
60
90
88

このように、シード値を設定すれば毎回同じ結果が得られ、一貫性のある挙動でプログラムの挙動を確認することができます。これは、バグの再現やアルゴリズムの検証時に非常に重要です。

また、Math.random()と違って、Randomクラスでは整数やブール値など、複数のデータ型に対応したランダム生成が可能です。そのため、より柔軟に設計されたプログラムを書くためにはRandomクラスの活用が欠かせません。

最後に、RandomクラスはJavaに標準で用意されているため、追加のライブラリをインストールすることなくすぐに使えるという点も初心者にとっては非常にありがたい特徴です。Javaで乱数を扱いたいときは、まずRandomクラスを使いこなすことが第一歩です。

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

生徒

「先生、乱数って毎回違うからテストしにくいって思ってたんですが、setSeedで同じ結果を再現できるのがすごく便利だと分かりました!」

先生

「そうだね、ランダムな動きを再現できると、デバッグもぐっと楽になるんだ。Randomクラスの力はそれだけじゃないよ。」

生徒

nextInt()だけじゃなくて、nextDouble()とかnextBoolean()も使えるって知って、いろんな場面で使えるなと思いました!」

先生

「その通り!しかも、もっと詳しく知りたいときはnextメソッドを継承して使う方法もあるから、上級者になっても使い道があるよ。」

生徒

「これからはRandomクラスをもっと使って、いろんな乱数の使い方を試してみたいです!」

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

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

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

JavaのRandomクラスって何のために使うんですか?

JavaのRandomクラスは、乱数を生成するために使われます。ゲームのランダムな敵の出現や、抽選の結果を決めるとき、テストデータを作成するときなど、ランダムな値が必要な場面でよく使われます。

Randomクラスの使い方がいまいち分かりません。どのように使い始めればいいですか?

まずは「import java.util.Random;」と記述してから、new Random()でインスタンスを作成します。その後、nextIntなどのメソッドを使って乱数を取得するのが基本的な使い方です。

Javaで0から9までの乱数を生成したいときは、どうすればいいですか?

RandomクラスのnextInt(int bound)メソッドを使えば、0以上bound未満の乱数を得ることができます。0から9の整数を得たい場合は、nextInt(10)を使います。

Randomクラスのnextメソッドはどういうときに使うものなんですか?

nextメソッドはRandomクラスの内部で使用される基礎的なメソッドです。通常は直接使うことは少なく、nextIntやnextDoubleなどのメソッドの中で利用されています。

nextメソッドを自分で使いたい場合はどうすればいいですか?

nextメソッドはprotected修飾子で定義されているため、直接使用するにはRandomクラスを継承したサブクラスを作る必要があります。その中でnextメソッドを呼び出すことで利用できます。

RandomクラスとMath.random()の違いはなんですか?

Math.random()は簡易的にランダムな値を得られますが、Randomクラスの方が多機能で、整数やブール値など複数のデータ型に対応できます。また、シードを指定して乱数の再現性も確保できます。

JavaのRandomクラスで毎回同じ乱数の結果を得る方法はありますか?

はい、Randomクラスにシード値を指定することで、毎回同じ乱数結果を得ることができます。コンストラクタでnew Random(1234L)のようにシードを与えたり、setSeedメソッドを使います。

Javaで乱数の再現性が重要になるのはどんなときですか?

テストやデバッグの場面で、同じ処理結果を繰り返し確認したいときに乱数の再現性は重要になります。シードを固定すれば、プログラムの挙動が安定して確認できます。

RandomクラスのnextDoubleやnextBooleanの使い方も知りたいです

nextDoubleは0.0以上1.0未満の乱数の小数を返し、nextBooleanはtrueかfalseをランダムに返します。どちらもnew Random()で作成したインスタンスから呼び出せます。

Randomクラスを使うときに注意することはありますか?

特定の乱数パターンを再現したいときはシードの管理に注意が必要です。また、Randomクラスはスレッドセーフではないため、マルチスレッドで使用する場合はjava.util.concurrent.ThreadLocalRandomの使用も検討してください。

Randomクラスの機能は初心者が覚えるには難しいですか?

いいえ、基本的な使い方はとてもシンプルで、初心者にも扱いやすいです。nextIntやnextDoubleなどを少し試すだけでも、Javaでの乱数処理が楽しく学べます。

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

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

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Spring
Spring の@RequestParamの使い方!テキストボックス、ラジオボタン、チェックボックス、セレクトボックスの値を受け取る。
更新記事
New2
JSP
EL式の基本構文まとめ!${}で使う書き方のルールを解説
更新記事
New3
Java
JavaのBigIntegerとisProbablePrimeメソッドを完全解説!初心者でもわかる素数判定
更新記事
New4
JSP
JSPで発生する主なエラーとは?初心者向けに原因と対処法をやさしく解説
新規投稿
人気記事
No.1
Java&Spring記事人気No1
JSP
JSPのおすすめ学習・用語まとめ【2026年最新版】初心者が知っておきたい基本をやさしく解説
No.2
Java&Spring記事人気No2
Java
Javaのクラスとインスタンス化、コンストラクタの使い方完全ガイド!初心者でもわかるオブジェクト指向の基礎
No.3
Java&Spring記事人気No3
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.4
Java&Spring記事人気No4
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.5
Java&Spring記事人気No5
Spring
Javaの@PreAuthorizeアノテーションを完全ガイド!初心者でもわかるメソッドセキュリティ設定
No.6
Java&Spring記事人気No6
Spring
Springの@Queryアノテーションを徹底解説!初心者でもわかるSpring Bootのカスタムクエリ
No.7
Java&Spring記事人気No7
Java
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
No.8
Java&Spring記事人気No8
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう