Java でランダム文字を生成する

Rupam Yadav 2023年10月12日
  1. Java で random.nextInt() を使ってランダム文字を生成する
  2. random.nextInt()charAt() を用いた文字列からのランダム文字の生成
  3. Apache Commons の RandomStringUtils を用いた乱数文字の生成
Java でランダム文字を生成する

このチュートリアルでは、いくつかの方法を使ってランダムな文字を生成する方法を紹介します。3つの方法を例を挙げて紹介することで、より理解を深めることができます。

Java で random.nextInt() を使ってランダム文字を生成する

Random は乱数値を生成するために Java で最もよく使われるクラスであるが、文字を生成することはできません。Random クラスを使って文字を乱数化するには、random.nextInt() を使って乱数整数を生成することができます。すべての文字は数値に対応します。

関数 nextInt() で文字を束縛することができます。次の例では、Random クラスのオブジェクトを作成し、(random.nextInt(26) + 'a') を用いていることがわかる。ここでは、'a'という文字が 97 という数字に対応しており、これを使ってアルファベットの小文字に対応する 26 個の乱数整数を生成することができます。

最後に、生成された整数を char にキャストします。

import java.util.Random;

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

    char randomizedCharacter = (char) (random.nextInt(26) + 'a');
    System.out.println("Generated Random Character: " + randomizedCharacter);
  }
}

出力:

Generated Random Character: p

random.nextInt()charAt() を用いた文字列からのランダム文字の生成

次の例では、Random クラスとその nextInt() メソッドを用いて、既に定義されている文字セットからランダムな文字を生成します。

下の例では、setOfCharacters がアルファベット、数字、記号を含む複数の文字からなる文字列であることがわかります。この文字列からランダムな文字を生成するには、random.nextInt() の引数に setOfCharacters の長さを使用します。乱数整数が生成されたら、それを用いて charAt() を用いてランダムなインデックスや位置にある文字を取得します。これは setOfCharacters からランダムな char を返します。

import java.util.Random;

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

    String setOfCharacters = "abcdefghxyz1234567-/@";

    int randomInt = random.nextInt(setOfCharacters.length());
    char randomChar = setOfCharacters.charAt(randomInt);

    System.out.println("Random character from string: " + randomChar);
  }
}

出力:

Random character from string: 4

Apache Commons の RandomStringUtils を用いた乱数文字の生成

最後の例では、Apache Commons ライブラリの RandomStringUtils クラスを使用します。RandomStringUtils クラスには、ランダムな英数字文字列を生成する関数 randomAlphanumeric() があります。randomAlphanumeric(count) は引数を 1つ取り、ランダム化したい文字列の長さを指定します。

下の例では、1 文字だけが欲しいので、randomAlphanumeric() メソッドに 1 を渡しています。しかし、この関数は結果を文字列として返します。これを char に変換しなければなりません。そこで、文字列から文字を取得するために charAt() を使用します。

import org.apache.commons.lang3.RandomStringUtils;

public class RandomChar {
  public static void main(String[] args) {
    String randomizedString = RandomStringUtils.randomAlphanumeric(1);
    char randomizedCharacter = randomizedString.charAt(0);

    System.out.println("Generated Random Character: " + randomizedCharacter);
  }
}

出力:

Generated Random Character: L
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Char