カテゴリ: Java 更新日: 2025/11/11

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

Random のnextLongメソッド
Random のnextLongメソッド

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

生徒

「先生、Javaでものすごく大きなランダムな数値を作るにはどうすればいいんですか?」

先生

「JavaのRandomクラスには、nextLongというメソッドがあって、long型のランダムな値を生成することができますよ。」

生徒

「int型じゃなくて、もっと大きな値ってことですね!どんなときに使えるのか気になります!」

先生

「それでは、nextLongメソッドの使い方と使い道を詳しく解説していきましょう!」

1. nextLongメソッドとは?

1. nextLongメソッドとは?
1. nextLongメソッドとは?

JavaのRandomクラスにあるnextLongメソッドは、long型の乱数を生成するためのメソッドです。long型とは、64ビットの符号付き整数で、非常に大きな値を扱えるのが特徴です。int型よりも広い範囲の数値を扱いたいときに使われます。

生成される値は、-2の63乗から2の63乗-1までの範囲に含まれるlong型のランダムな整数です。これは非常に広い範囲であるため、より多様なランダム値を扱いたい場合に便利です。

2. nextLongメソッドの基本的な使い方

2. nextLongメソッドの基本的な使い方
2. nextLongメソッドの基本的な使い方

nextLongメソッドは、Randomクラスのインスタンスから呼び出すだけで簡単に使えます。引数は必要なく、戻り値としてlong型のランダムな値が返されます。以下は基本的な使い方のサンプルです。


import java.util.Random;

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

3. long型の値はどのくらい大きいの?

3. long型の値はどのくらい大きいの?
3. long型の値はどのくらい大きいの?

long型はJavaで最も大きな整数型の一つで、-9京2233兆3720億3685万4776から、9京2233兆3720億3685万4775までの値を表現できます。これはint型の範囲(約-21億〜21億)をはるかに超えています。そのため、大規模な乱数を必要とする処理や、大量のユニークな値を生成する場合に向いています。

4. nextIntとの違い

4. nextIntとの違い
4. nextIntとの違い

RandomクラスにはnextIntメソッドもありますが、これはint型(32ビット)で、取り得る値の範囲が比較的狭いです。nextLongはその倍のビット数(64ビット)でより広い範囲の乱数を生成できます。したがって、桁数が大きいランダムな値を必要とする処理にはnextLongが最適です。

5. 実行結果の例

5. 実行結果の例
5. 実行結果の例

上記のコードを実行すると、たとえば次のような出力が得られます。実行するたびに結果は変わります。


ランダムなlong値:-8724893457923891743

このように、非常に大きな数値も含まれているため、ユニークIDや一意のキーなどに活用することも可能です。

6. シードを使って同じ値を再現する

6. シードを使って同じ値を再現する
6. シードを使って同じ値を再現する

Randomクラスでは、setSeedメソッドやコンストラクタでシード値を設定することで、同じ乱数の流れを再現できます。nextLongも例外ではなく、同じシードを指定すれば同じlong型のランダム値が得られます。


Random random = new Random(12345L);
long fixedValue = random.nextLong();
System.out.println(fixedValue);

-1432033672893279340

このように、シードを固定することで、毎回同じ結果を得ることができ、テストや検証に役立ちます。

7. nextLongを使う場面の具体例

7. nextLongを使う場面の具体例
7. nextLongを使う場面の具体例

JavaのnextLongメソッドは、ランダムなユニークIDの生成、ランダムなタイムスタンプの生成、大規模なデータの疑似テスト、分散システムでの一意なキーの割り当てなど、多くの用途で使われています。たとえば、UUIDの一部を独自に実装したいときや、データベースに登録する一意な主キーを生成する際にも便利です。

8. JavaのRandomクラスは初心者でも使える?

8. JavaのRandomクラスは初心者でも使える?
8. JavaのRandomクラスは初心者でも使える?

はい、JavaのRandomクラスは非常にシンプルで、初心者にも扱いやすい設計になっています。特にnextLongのようなメソッドは、メソッドを呼び出すだけで高精度の乱数が得られるため、Javaでのプログラミング学習の初期段階から積極的に使ってみることをおすすめします。

9.まとめ

9.まとめ
9.まとめ

今回は、JavaのRandomクラスに用意されているnextLongメソッドについて、初心者の方にもわかりやすく詳しく解説しました。 Javaでランダムなlong型の値を生成したい場合には、このnextLongメソッドが非常に便利であり、特別な準備なしに一行で呼び出すことができます。

nextLongメソッドは、64ビットの符号付き整数、つまり非常に大きな範囲(約±9京)を持つ乱数を生成できます。このため、Javaの標準int型(約±21億)では表現できないような大規模な数値の生成が必要な場面において、大きな威力を発揮します。

また、setSeedメソッドを活用することで、同じ乱数の流れを再現することも可能となり、ユニットテストやデバッグにも適しています。

実際の活用場面としては、ランダムな一意のID生成、ランダムなタイムスタンプの模倣、分散システムにおけるシャーディング処理、または暗号鍵に使用する前段階の乱数生成など、JavaのnextLongは様々な場面で利用価値がある重要なメソッドです。

以下は、シード値を使って毎回同じlong型の乱数を得る簡単なサンプルコードです。


import java.util.Random;

public class FixedLongExample {
    public static void main(String[] args) {
        Random random = new Random(20250616L);
        long fixedLong = random.nextLong();
        System.out.println("固定シードから得られるlong値:" + fixedLong);
    }
}

固定シードから得られるlong値:-1218539128302047476

このように、JavaのRandomクラスとnextLongメソッドを活用することで、柔軟で強力な乱数処理が可能になります。

これからJavaで本格的なアプリケーションを開発していく方にとっても、nextLongは知っておくべき基本のメソッドと言えるでしょう。 ランダム性が重要になる処理、特に大きな値を必要とするシステムでは、積極的にnextLongを活用していきましょう。

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

生徒

「JavaのnextLongメソッドって、すごく大きな数もランダムに作れるから驚きました!」

先生

「そうですね。intよりもはるかに広い範囲の値が扱えるので、より本格的な処理やデータ生成に使えますよ。」

生徒

「しかも、setSeedで再現できるのが便利ですね。テストでも活躍しそうです。」

先生

「その通り。Javaで大きなランダムな値が必要なときは、まずnextLongを使えるかどうか考えてみると良いでしょう。」

カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
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の@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本