sixty-life

還暦を迎えた今、独学でプログラミング学習をする日々の記録

乱数(ランダムな数)を使う

基礎からのJava 改訂版

Part 02 Chapter 05

ランダムな数を random.nextInt メソッドを使って取得する

int <ランダムな数> = random.nextInt ( <数の上限> ) ;

int num = rand.nextInt(10);
  • nextIntメソッドは戻り値にランダムな整数(int型)を返す。
  • 引数には乱数の上限値(int型)を指定する。

Random.nextIntを使うには

  1. インポート宣言
  2. インスタンスの作成
  3. メソッドの呼び出し
import java.util.Random; // ①インポート宣言

public class Sample3 {
public static void main(String[] args) {
Random rand = new Random(); // ②インスタンスの作成
int num = rand.nextInt(10); // ③メソッドの呼び出し

System.out.println("ラッキナンバーは" + num + "です!");
}
}

ターミナル:

  args javac Sample3.java

  args java Sample3

ラッキナンバーは6です!

 

ちなみに Randomクラス をAIで深掘りすると...

Random クラスは疑似乱数ジェネレータ(Pseudo-Random Number Generator, PRNG)を使用してランダムな数字を生成します。これは、完全にランダムではなく、初期シード値に基づいて数列を計算するアルゴリズムによって生成される数値のシーケンスです。

Random クラスによって生成される乱数は疑似乱数であるため、真のランダム性(物理的なランダム性)を必要とするセキュリティ関連の用途には適していません。セキュリティ上の目的で乱数を使用する場合は、java.security.SecureRandom というクラスを使用することが推奨されます。SecureRandom は暗号学的に強い乱数を生成し、より予測が困難です。

...だそうです。

インポート宣言

ここで登場した「インポート宣言」とは?

import java.util.Random;

import <パッケージ名> . <クラス名> ;

インポート宣言の必要なパッケージと不要なパッケージがあるそうです。

これまでのプログラムでは不要だった訳は、Java標準ライブラリのうちの java.langパッケージだったから。

  1. 以下、java.langパッケージ
  2. Object: すべてのクラスのスーパークラス
  3. Class: クラスオブジェクトのメタクラス
  4. String: 文字列を表す不変クラス。
  5. StringBuilderStringBuffer: 文字列を効率的に操作するためのクラス。
  6. System: システム関連のプロパティやユーティリティメソッドを提供。
  7. Throwable: すべてのエラーと例外のスーパークラス
  8. Exception: 標準例外クラスのスーパークラス
  9. RuntimeException: 非チェック例外のスーパークラス
  10. Thread: スレッドを作成して制御するためのクラス。
  11. Enum: 列挙型の基底クラス。
  12. Math: 数学関連のメソッドを提供。
  13. Package: クラスとインターフェースのパッケージに関する情報を提供。

↑これらは「インポート宣言」不要で、これ以外を使う場合には必要だそうです。

  1. 以下「インポート宣言」が必要なパッケージ(主なもの)
  2. java.util

    • ArrayList, LinkedList: リスト構造を提供するクラス。
    • HashMap, TreeMap: マップ構造を提供するクラス。
    • HashSet, TreeSet: セット構造を提供するクラス。
    • Scanner: テキストスキャンおよび解析のためのクラス。
    • Date, Calendar: 日付と時間の操作に関するクラス。
  3. java.io

    • File: ファイルとディレクトリパスを抽象化するクラス。
    • InputStream, OutputStream: バイトストリームI/Oを行うための基本クラス。
    • Reader, Writer: 文字ストリームI/Oを行うための基本クラス。
    • BufferedReader, BufferedWriter: バッファリングによる高速な読み書きを提供するクラス。
  4. java.net

    • URL, URI: URLとURIを扱うためのクラス。
    • Socket, ServerSocket: ネットワーク通信におけるソケットプログラミングをサポートするクラス。
  5. java.sql

    • Connection, Statement, ResultSet: データベース接続およびSQLクエリの実行に関連するクラス。
  6. その他、java.aplet、java.beens、java.math、java.nio、java.awtなど。

 

new演算子を使ってRandomクラスのインスタンスを作成し、Randomクラス型の変数にインスタンスを代入
Random rand = new Random(); // ②インスタンスの作成

 

インスタンスとはクラスから作成される実体のこと。インスタンスを作成するときの演算子new (新しく作るという意味)です。

Java標準ライブラリのクラスの多くは new演算子インスタンスを作ってから利用します

書き方:

<クラス名> <変数名> = new <クラス名> ( <引数 > ) ;

<変数名>:作成したインスタンスを代入する変数

<引数>が必要かどうかはインスタンスを作成する変数によって異なる

その変数を通してメソッドを呼び出す

メソッドの呼び出し:

<変数名> . <メソッド名>

int num = rand.nextInt(10); // ③メソッドの呼び出し

 

しかし、前回数字の変換の時の Integer.parseInt() ではインスタンスを作らずにメソッドを呼び出しました

このように、Java標準ライブラリを利用するときには

の2種類があります。

インスタンス → 一時的または動的

static → 静的

 

メソッド

呼び出し例

解説

インスタンスメソッド

Random rand = new Random();

Int num = rand.nextInt(10)

New演算子インスタンスを作成する。

<インスタンスの変数名> . <メソッド>で呼び出す

staticメソッド

Int num = Intefer.parseInt(“7”);

<クラス名> . <メソッド>でメソッドを呼び出す

 

学習テキスト

基礎からのJava 改訂版