Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで乱数を生成する方法:初心者向け完全ガイド

Javaで乱数を生成する方法

人間にとって、適当な数字を思い浮かべるのは簡単なことです。自分に「数字をひとつ」と問いかければ、頭に何かが浮かびます。

プログラミングでも同じように簡単だといいのですが、実際はそうはいきません。とはいえ、Javaで乱数を生成するのは、方法さえ知っていればとても簡単です。

このガイドでは、乱数を生成するための3つのアプローチについて解説します。それぞれの方法が、数当てゲームの実装を通してどのように機能するのか、具体例とともに見ていきましょう。

乱数を生成する

数字を当てるゲームを一度は遊んだことがあるのではないでしょうか。正解を当てると景品がもらえるゲームもあります。このガイドでは、Javaで数当てゲームを作成していきます。

最初のステップは、もちろん乱数の生成です。乱数がなければ、ゲームは面白くなりません。それでは、利用できる3つの方法を順番に見ていきましょう。

Randomクラスを使う方法

Javaには、乱数を生成するために使える便利な「Random」クラスが用意されています。まずは、java.util.Randomクラスを使って乱数を生成するところから、数当てゲームを始めましょう。

import java.util.Random;

class Main {
	public static void main(String args[]) {
		Random random_number_generator = new Random();
		int random_number = random_number_generator.nextInt(25);

		System.out.println(random_number);
	}
}

このクラスを3回実行すると、3つの異なる乱数が生成されます。

22
15
19

まず、java.util.Randomクラスをインポートしています。次に、このクラスのインスタンス「random_number_generator」を作成しました。このインスタンスを使うことで、乱数を生成できます。

nextInt()メソッドを使うと、0以上指定した数値未満の範囲で乱数を生成できます。上の例では25を指定しているので、ジェネレーターが返す数値はすべて0から24の間になります。

Math.random()を使う方法

Math.random()メソッドは少し手間がかかりますが、乱数を生成する良い方法のひとつです。Math.random()を使って乱数生成のコードを作成してみましょう。

class Main {
	public static void main(String args[]) {
		int small = 0;
		int large = 25;

		int random_number = (int)(Math.random() * (large - small + 1) + small);
		System.out.println(random_number);
	}
}

Math.random()はJavaに組み込まれているため、コードでインポートする必要はありません。

まず、2つの変数を宣言しています。「small」は乱数の下限(これより小さい数は生成されない)、「large」は上限(これより大きい数は生成されない)を指定します。

次に、数式を使って乱数を生成しています。これは、Math.random()単体では整数の乱数を返さないためです。Math.randomメソッドは0.0から1.0の間の乱数を返すので、上記の数式を使って、指定した範囲内の整数に変換する必要があります。

このコードを3回実行すると、3つの乱数が生成されます。

2
1
9

ThreadLocalRandomを使う方法

ThreadLocalRandomは、乱数を生成するために使えるクラスです。

このクラスは、複数の乱数を並行して生成したい場合に最適です。これは通常、マルチスレッド環境で必要になります。

この方法を使って乱数ジェネレーターを作成してみましょう。

import java.util.concurrent.ThreadLocalRandom;

class Main {
	public static void main(String args[]) {
		int small = 0;
		int large = 25;

		ThreadLocalRandom random_number_generator = ThreadLocalRandom.current();
		int random_number = random_number_generator.nextInt(small, large);
		System.out.println(random_number);
	}
}

まず、乱数の生成に使うクラスを含むThreadLocalRandomライブラリをインポートしています。次に、乱数ジェネレーターの下限と上限を設定する2つの変数を指定しました。

ThreadLocalRandomクラスを参照する変数「random_number_generator」を宣言し、nextInt()メソッドに「small」と「large」の変数を引数として渡すことで、乱数を生成しています。

プログラムを3回実行すると、3つの乱数が返されます。

4
23
15

これで、数当てゲームの残りの部分を作り始める準備が整いました。

当てるロジックの作成

乱数の生成方法がわかったところで、次はユーザーが乱数を当てられるようにするロジックを作成しましょう。

上記のどの例のコードも、このコードと組み合わせて使えます。コードスニペットの変数名は、以下の例と互換性があるように設定されています。

まず、「Scanner」クラスを使って、ユーザーに数字を入力してもらいましょう。

import java.util.Scanner;

class Main {
	public static void main(String[] args) {
		// 当てる処理はここに記述
		Scanner guess = new Scanner(System.in);

		System.out.println("Guess a number between 1 and 25: ");
		int user_guess = guess.nextInt();
	}
}

このコードは、ユーザーに「1から25の間の数字を当ててください」と促します。ユーザーがJavaコンソールに入力した値は、変数「user_guess」に格納されます。

次に、ユーザーが入力した数字が、プログラムが生成した数字と一致しているかどうかをチェックするif文を書きます。

...
if (user_guess == random_number) {
	System.out.println("You have correctly guessed the number!");
} else {
	System.out.println("Your guess is incorrect!");
}

プログラムを実行して、1から25の間の数字を入力してみましょう。

Guess a number between 1 and 25:
7
Your guess is incorrect!

数字を正しく当てられた場合は、プログラムは次のように出力します。

Guess a number between 1 and 25:
9
You have correctly guessed the number!

わずか数行のコードで、当てるべき乱数を生成するゲームを完成させることができました。

まとめ

乱数はプログラミングにおいて幅広い用途があります。この記事では、数当てゲームを例に、乱数の使い方を解説しました。

Javaで乱数を生成するには、次の3つの方法があります。

  • Randomクラスを使う
  • 組み込みのMath.random()メソッドを使う
  • ThreadLocalRandomクラスを使う

さらに挑戦してみたい方は、数当てゲームのコードを改造して、複数回の推測ができるようにしてみましょう。ループと条件分岐を組み合わせることで、より実践的なプログラムになります。


  1. JavaのMath.random()メソッド徹底解説!乱数生成の基本から範囲指定まで

    JavaのMath.random()メソッドは、0.0以上1.0未満の擬似乱数(疑似ランダムな数値)を生成するためのメソッドです。生成された乱数に別の数値を掛けることで、0〜1以外の任意の範囲の乱数を取得することもできます。結果が0になることはあっても、1以上になることはありません。 プログラミングで乱数が必要になる場面 プログラミングをしていると、ランダムな数値を生成したい場面によく出会います。例えば、クルーズ船会社を運営しているとしましょう。顧客の注文番号として使う予約参照番号をランダムに生成したり、数当てゲーム用のランダムな数字を作りたいといったケースが考えられます。 Javaには、乱

  2. Javaコンパイラ入門:仕組みの解説と初心者におすすめのオンラインIDE

    5〜10年前、Javaを学ぶのは今ほど手軽なことではありませんでした。当時は、コンパイラとインタプリタを含むJava Development Kit(JDK)をダウンロードし、自分のマシン上で実行環境を整える必要がありました。しかし現在では、無料で利用できるJavaコンパイラがオンライン上に数多く存在します。この記事では、Java言語のコンパイルの仕組みと、練習やプロジェクト作成に活用できるオンラインツールについて詳しく解説します。 Javaプログラムはどのように実行されるのか? Javaは完全なコンパイル型言語ではありません。しかし、かといって完全なインタプリタ型言語でもありません。 ここ