【Java】レッスン1-5:乱数を生成しよう

一つ前のページでは文字列操作について学習しました。
今回は 乱数生成 について見ていきましょう。
Lesson1:基礎文法編
・Lesson1-1:JAVAの入り口|初めてコードを書いてみよう
・Lesson1-2:変数と定数を理解しよう
・Lesson1-3:四則演算をしよう
・Lesson1-4:文字列を操作しよう
・Lesson1-5:乱数を生成しよう ◁今回はココ
・確認問題1-☆1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:クラス編
import文入門|Randomクラス活用の基礎
プログラムにランダムな要素を加えることで、ゲームの挙動やテストデータの作成など、実用的で面白い機能を実現できます。
JavaではRandom
クラスを使うことで乱数を簡単に生成することが可能です。
本記事では、Java初心者でも理解しやすいように、Random
クラスの基本的な使い方から実際のコード例までをわかりやすく解説します。
最後まで読めば、あなたのプログラムに“予測不能な面白さ”を加えられるようになりますので、さっそく学んでいきましょう。

import文の意味と役割を簡単に解説
Javaの import文 は外部のクラスやパッケージの機能を簡単に使えるようにするための文法です。
つまり、import文を使うことで必要な機能を拡張し、簡単に利用することができるようになります。
特に、ここまでのレッスンでも使用してきた java.util.Scanner
クラス や、乱数生成に必要な java.util.Random
クラス などが代表的です。
Randomクラスを使うためのimport文の書き方
実際に乱数を生成する例を見てみましょう。
乱数生成には以下の3つのステップが必要になります。
- import文を使って
Random
クラスをインポート(乱数生成機能の追加) Random
クラスのインスタンス生成(乱数生成のための準備)- random.nextInt()メソッド を使って乱数生成
インスタンス生成についてはScannerクラス同様、レッスン5で詳細に学習します。
今は細かいことは考えずに、ランダムな数値を生成するために必要な構文として丸暗記しましょう。
nextInt()
メソッドは括弧内に書いた数値までのインデックス番号の値をランダムに生成します。
import java.util.Random; // Randomクラスのインポート public class Main { public static void main(String[] args) { Random random = new Random(); // Randomクラスのインスタンスを作成 int randomNumber = random.nextInt(10); // 0から9までの乱数を生成して変数に代入 System.out.println("生成された乱数: " + randomNumber); } }
言い換えると、random.nextInt(10)
は0から始まる10個の数値(すなわち0~9)の中からランダムに一つ選ぶ乱数生成です。
例えば、サイコロを振ることを想定し1から6までの数値をランダムに生成したい場合は、以下のように書けば実現できます。
int dice = 1 + random.nextInt(6);
RandomとScannerを組み合わせた使い方
次にRandom
クラスとScanner
クラスを組み合わせ、ユーザーが指定した範囲で乱数を生成するプログラムを紹介します。
import java.util.Random; // Randomクラスのインポート import java.util.Scanner; // Scannerクラスのインポート public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Scannerクラスのインスタンス生成 System.out.print("乱数の上限を入力してください: "); int Limit = scanner.nextInt(); // ユーザーから上限値を取得 Random random = new Random(); // Randomクラスのインスタンス生成 int randomNumber = random.nextInt(Limit); // 0からupperLimit-1の乱数を生成 System.out.println("生成された乱数: " + randomNumber); } }
このプログラムではRandom
クラスとScanner
クラスの両方をインポートし、ユーザーが指定した範囲で乱数を生成しています。
これにより、ユーザーが入力した値を活用し、柔軟な乱数生成が可能となります。
なお、現時点ではコードの細かい意味は深く考えずに暗記するようにと書いていますが、レッスン5-1:クラスの基礎を理解しよう の記事でもう一度このコードを紹介し、そこでは詳細な解説をしています。
まとめ|import文と乱数生成で広がるプログラム表現
今回の学習では、import
文を使って外部クラスを利用するための基本を理解し、Random
クラスをプログラムに組み込む方法を学びました。
また、Scanner
と組み合わせることで、ユーザーからの入力をもとにランダムな値を生成する実践的なコードも書けるようになりました。
これらを使いこなせば、ゲームやシミュレーション、テストデータ作成など、より自由度の高いプログラムを作ることができます。
次のレッスンでは、さらにプログラムに多様な動きを加えるための新しい構文や仕組みを学び、実装力を一歩ずつ伸ばしていきましょう。
練習問題|RandomとScannerをインポートして使おう

Javaのimport文を使用し、他のクラスをプログラム内で利用できるようにする方法を学びましょう。
この問題ではユーザーが入力した数値とプログラムが生成する乱数を使って、二つの数の合計を表示するプログラムを作成します。
この問題の要件
以下の要件に従ってコードを完成させてください。
import
文を使ってjava.util.Scanner
とjava.util.Random
クラスをインポートすること。Scanner
クラスを使ってユーザーからの整数入力を受け取り、その値を変数userNumber
に格納すること。Random
クラスを使って1から100の間で乱数を生成し、その値を変数randomNumber
に格納すること。- ユーザーが入力した数と生成された乱数の合計を計算し、以下の形式で画面に表示すること:
- 「あなたが選んだ数: (ユーザーが入力した数)」
- 「生成されたランダムな数: (生成された乱数)」
- 「二つの数の合計: (合計)」
ただし、以下のような実行結果となること。
1から100の間で好きな数字を入力してください: 45 あなたが選んだ数: 45 生成されたランダムな数: 67 二つの数の合計: 112
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:
java.util.Random
クラスをインポート
2:java.util.Scanner
クラスをインポート
3:Main
クラスの定義
□ メインメソッドの定義
□ □Scanner
クラスを使い、ユーザーから整数を入力して変数userNumber
に代入
□ □ ユーザーに「1から100の間で好きな数字を入力してください: 」と表示
□ □Random
クラスを使用して乱数を生成し、変数randomNumber
に代入
□ □ ユーザーが入力した数と生成した乱数を表示
□ □ 二つの数の合計を計算し、合計結果を表示
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
import java.util.Random; // 乱数を生成するためのクラス import java.util.Scanner; // ユーザーからの入力を受け取るためのクラス public class Main { public static void main(String[] args) { // Scannerクラスを使用してユーザーからの入力を受け取る /*【穴埋め問題1】 ここにScannerクラスを使用してユーザーから整数を入力し、変数userNumberに代入するコードを書いてください。 */ // Randomクラスを使用して乱数を生成 /*【穴埋め問題2】 ここにRandomクラスを使用して1から100の範囲で乱数を生成し、変数randomNumberに代入するコードを書いてください。 */ // 結果を出力 System.out.println("あなたが選んだ数: " + userNumber); System.out.println("生成されたランダムな数: " + randomNumber); System.out.println("二つの数の合計: " + (userNumber + randomNumber)); } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題の解答と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
import java.util.Random; // 乱数を生成するためのクラス import java.util.Scanner; // ユーザーからの入力を受け取るためのクラス public class Main { public static void main(String[] args) { // Scannerクラスを使用してユーザーからの入力を受け取る Scanner scanner = new Scanner(System.in); System.out.print("1から100の間で好きな数字を入力してください: "); int userNumber = scanner.nextInt(); // ユーザーが入力した数を取得 // Randomクラスを使用して乱数を生成 Random random = new Random(); int randomNumber = random.nextInt(100) + 1; // 1から100の間で乱数を生成 // 結果を出力 System.out.println("あなたが選んだ数: " + userNumber); System.out.println("生成されたランダムな数: " + randomNumber); System.out.println("二つの数の合計: " + (userNumber + randomNumber)); } }
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
import文
import java.util.Random; // 乱数を生成するためのクラス import java.util.Scanner; // ユーザーからの入力を受け取るためのクラス
最初に
import
文を使ってjava.util.Random
とjava.util.Scanner
をインポートしています。import
文はJavaで他のパッケージに含まれるクラスを使いたい時に必要です。Mainクラスとmainメソッド
public class Main { public static void main(String[] args) {
Main
クラスはJavaプログラムのエントリーポイントです。すべてのJavaアプリケーションはクラスを持ち、メインメソッドである
main
から処理が始まります。この
main
メソッド内で実際にプログラムの処理が進みます。Scannerクラスでユーザーからの入力を受け取る
Scanner scanner = new Scanner(System.in); System.out.print("1から100の間で好きな数字を入力してください: "); int userNumber = scanner.nextInt(); // ユーザーが入力した数を取得
ここでは
Scanner
クラスを使ってユーザーから数値を入力してもらいます。new Scanner(System.in)
によってユーザーの入力を読み取るためのScannerオブジェクトが作成されます。その後
nextInt()
メソッドを使い、ユーザーが入力した整数を取得して変数userNumber
に格納します。Randomクラスで乱数を生成
Random random = new Random(); int randomNumber = random.nextInt(100) + 1; // 1から100の間で乱数を生成
ここでは
Random
クラスを使って1から100の範囲で乱数を生成します。new Random()
でRandomオブジェクトを作成し、nextInt(100) + 1
で0から99までの整数に1を足すことで、1から100の範囲で乱数が生成されます。生成された数値は
randomNumber
に格納されます。結果の出力
System.out.println("あなたが選んだ数: " + userNumber); System.out.println("生成されたランダムな数: " + randomNumber); System.out.println("二つの数の合計: " + (userNumber + randomNumber)); } }
最後にユーザーが入力した数(
userNumber
)と生成された乱数(randomNumber
)、そしてその合計値を表示します。System.out.println
はコンソール画面にメッセージを出力するためのメソッドです。