2024.12.18

乱数で文字列を作成

はじめに

ここでは、乱数を使って指定した文字数の文字列を自動作成するJavaソースコードを紹介します。

以下は文字列の作成例です。文字数を指定して文字列を作成することができます。

9etHqTuutGpLFBbUXcyl	…	20文字
8ycuc0Hkpa	…	10文字
i5HVY5s6	…	8文字

これは、自動パスワード生成などに利用できます。

文字列作成に使う文字について

以下の数字とアルファベットを組み合わせて文字列を作成します。

半角の数字

0123456789

半角の大文字アルファベット

ABCDEFGHIJKLMNOPQRSTUVWXYZ

半角の小文字アルファベット

abcdefghijklmnopqrstuvwxyz

Javaソースコード

定義した四則演算を行うクラスを実行するJavaソースコードです。

RandomChars.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
import java.util.Scanner;

public class RandomChars {
	// n文字のランダムな英数字を戻す
	private static String create_randomchars( int n )
	{
		// nが1未満の場合、nullを戻す
		if ( 1 > n ) return null;

		// nが1以上の場合
		// 使用する文字を指定
		String chaset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

		// 一時的に結果を格納するn個のchar配列を作成
		char[] chas = new char[ n ];

		// n回のループを作成
		for ( int i = 0; i < n; i++ ) {
			// 0~chaset.length()-1の乱数をindexに代入
			int index =  (int)( Math.random() *  (double)chaset.length() );

			// chasetのindex番目の文字をchas[i]に代入
			chas[ i ] = chaset.charAt( index );
		}

		// 配列chasでStringを作成して戻す
		return new String( chas );
	}

	// メイン
	public static void main( String[] args )
	{
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

		// 文字数の入力
		System.out.println( "文字数を入力してください" );
		int n = scan.nextInt();

		// 結果を出力
		System.out.println(  create_randomchars( n ) );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis RandomChars.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac RandomChars.java

実行

C:\talavax\javasample>java RandomChars

実行結果

110.0
90.0
1000.0
10.0

Javaソースコードの解説

ここから、ソースコードを順番に説明していきます。

001
import java.util.Scanner;

Javaクラスライブラリの中から「java.util.Scanner」というパッケージにあるクラスを使うために記述しています。

003
public class RandomChars {

クラス名を、RandomCharsとしています。

004
005
006
	// n文字のランダムな英数字を戻す
	private static String create_randomchars( int n )
	{

n文字のランダム文字列を戻すメソッドcreate_randomcharsメソッドです。

引数nに文字数を渡すと、String型のランダム文字列が戻ってきます。

007
008
		// nが1未満の場合、nullを戻す
		if ( 1 > n ) return null;

nが1未満の場合、return文nullを戻しています。

010
011
012
		// nが1以上の場合
		// 使用する文字を指定
		String chaset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

ここからnが1以上の処理です。

String型のchasetに"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"を代入しています。

この中の文字をランダムに選んで文字列を自動作成します。

014
015
		// 一時的に結果を格納するn個のchar配列を作成
		char[] chas = new char[ n ];

一時的に結果を格納するchar型配列chasを要素数nで作成しています。

017
018
		// n回のループを作成
		for ( int i = 0; i < n; i++ ) {

n回のループfor文で作成しています。

019
020
021
022
023
			// 0~chaset.length()-1の乱数をindexに代入
			int index =  (int)( Math.random() *  (double)chaset.length() );

			// chasetのindex番目の文字をchas[i]に代入
			chas[ i ] = chaset.charAt( index );

Math.random()メソッドを使って0から(chasetの文字数-1)の乱数を発生し、int型変数indexに代入しています。

chasetのindex番目の文字コードをcharAtメソッドで取得し、chas[ i ]に代入しています。

Math.randomメソッド

public static double Math.random()
・乱数を返します。

  パラメータ なし

  戻り値     0.0以上、1.0未満の乱数

Stringのlengthメソッド

int length()
・この文字列の長さを返します。

  パラメータ なし

  戻り値     文字列の長さ

StringのcharAtメソッド

public char charAt(int index)
・指定されたインデックスのchar値を返します。

  パラメータ index:文字位置(先頭文字は0)

  戻り値     文字コード
026
027
		// 配列chasでStringを作成して戻す
		return new String( chas );

char型配列から作成したString型の値をreturn文で戻しています。

030
031
032
	// メイン
	public static void main( String[] args )
	{

このmainメソッドからプログラムを実行します。

033
034
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

標準入力System.inを使って、Scannerクラスscanを初期化しています。

036
037
038
		// 文字数の入力
		System.out.println( "文字数を入力してください" );
		int n = scan.nextInt();

文字数の入力部分です。

nextIntメソッドで、キーボードから入力された1行を読み取り、その値をint型変数nに代入しています。

ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数nに格納されます。

040
041
		// 結果を出力
		System.out.println(  create_randomchars( n ) );

printlnで結果を出力しています。

以上です。

関連コンテンツ

キーボードを使って値を入力する方法を解説しています。ソースコード付きです。

2020.08.19

キーボードを使って整数値を入力する方法を解説しています。Scannerクラスを利用しています。

2023.03.08

キーボードを使って整数値を2つ入力る方法を解説しています。Scannerクラスを利用しています。

2023.03.16

キーボードを使って入力した整数値を2乗する方法を解説しています。

2023.03.10

キーボードを使って入力した整数値の絶対値を求める方法を解説しています。

2023.03.10

キーボードを使って実数値(double)を入力する方法を解説しています。Scannerクラスを利用しています。

2023.03.09

キーボードで入力された実数の角度からsin(サイン)、cos(コサイン)を計算し、コンソール出力する方法を解説します。

2023.04.10

キーボードを使って実数値(double)を2つ入力する方法を解説しています。Scannerクラスを利用しています。

2023.03.16

キーボードで入力した整数値を配列に格納するメソッドの作り方を解説しています。

2020.08.19

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

乱数の意味と、Math.randomメソッドの使い方をソースコードを使って詳しく解説しています。

2015.12.27

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

同じ型の変数(データ)を複数個まとめて管理するデータの持ちかたがあります。これが配列です。くわしくは、記事をご覧ください。

2016.01.14

処理を繰り返すために使用するfor文について解説しています。

2020.03.23

繰り返し処理の作り方を解説しています。

2016.03.02

for文で変数名iがよく使われる理由について説明しています。興味のある方は是非。

2022.08.29

数値しか扱えないコンピュータでどうやって文字を記憶、処理しているのかを説明しています。興味のある方は、記事をご覧ください。

2020.03.23

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告