Java でランダム文字を生成する
-
Java で
random.nextInt()
を使ってランダム文字を生成する -
random.nextInt()
とcharAt()
を用いた文字列からのランダム文字の生成 -
Apache Commons の
RandomStringUtils
を用いた乱数文字の生成
このチュートリアルでは、いくつかの方法を使ってランダムな文字を生成する方法を紹介します。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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn