[C#] ランダム文字列を作成する

更新:

C#で「xa7ib0」や「pimlw」といった任意の長さのランダム文字列を作成する方法を紹介します。

アルファベットと数字のランダム文字列を作成する

▼ランダム文字列を作成する関数

C#

private string CreateRandomString(int length) {
	var str = "abcdefghijklmnopqrstuvwxyz0123456789";
	var sb = new StringBuilder();
	var rng = new RNGCryptoServiceProvider();
	var bs = new byte[4];

	for (var i=0; i<length; i++) {
		rng.GetBytes(bs);
		var seed = BitConverter.ToInt32(bs, 0);
		var pos = (new Random(seed)).Next(str.Length);
		var c = str.Substring(pos, 1);
		sb.Append(c);
	}

	rng.Dispose();
	return sb.ToString();
}

2行目 文字列に使用する文字を指定します。この関数の場合は小文字アルファベットと数字を使ったランダム文字列が作成されます。特定の文字を除外したい場合はここに含めないようにします。

8-9行目 乱数の生成の使用するためのシード値を作成します。

10行目 シード値を使って乱数を生成します。範囲は0から変数strの長さ未満の整数です。

11-12行目 変数strに対して乱数の位置から1文字を取り出し、StringBuilderに追加していきます。

▼使い方と結果の例

C#

var str1 = CreateRandomString(3);
var str2 = CreateRandomString(5);

Console.WriteLine(str1);	// (結果例) 4kc
Console.WriteLine(str2);	// (結果例) dp3kx

関数の引数には文字列の長さを指定します。