C#でランダムな文字列を生成する方法を初心者向けに解説
C#でランダムな文字列を生成したい場面は意外と多くあります。パスワードの一時発行やテストデータの作成など、実は標準ライブラリだけでも簡単に実装可能です。本記事では、RandomクラスとStringBuilderを組み合わせて、ランダムな英大文字(A〜Z)からなる文字列を作成する方法を、手順ごとにわかりやすく解説します。
1. StringBuilderで文字列の受け皿を用意する
まず、生成した文字を順番に連結していくための入れ物として、StringBuilderのインスタンスを作成します。
StringBuilder str = new StringBuilder();
2. Randomクラスのインスタンスを生成する
次に、乱数を発生させるためのRandomクラスのインスタンスを作ります。ここでは現在時刻のTicksをシード値として渡し、実行ごとに異なる乱数系列が得られるようにしています。
Random random = new Random((int)DateTime.Now.Ticks);
3. ループ処理でランダムな文字を生成して連結する
続いて、作りたい文字列の長さ分だけループを回します。以下の例では、4文字のランダム文字列を生成しています。
for (int i = 0; i < 4; i++) {
c = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
str.Append(c);
}
random.NextDouble()が返す0以上1未満の乱数をもとに、ASCIIコード65〜90(つまりA〜Z)に対応する文字コードを計算し、各ループで1文字ずつStringBuilderへ追加しています。この繰り返しによって、目的の長さのランダム文字列が組み上がります。
完全なサンプルコード
ここまでの手順をすべてまとめたプログラムがこちらです。
using System.Text;
using System;
class Program {
static void Main() {
StringBuilder str = new StringBuilder();
char c;
Random random = new Random((int)DateTime.Now.Ticks);
for (int i = 0; i < 4; i++) {
c = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
str.Append(c);
}
Console.WriteLine(str.ToString());
}
}
実行結果
ATTS
プログラムを実行するたびに、異なる4文字のランダムな英大文字列が出力されます。
なお、より安全な乱数が必要な用途(トークンやパスワード生成など)では、RandomNumberGeneratorなど暗号学的に強い乱数を使うことも検討するとよいでしょう。
-
Pythonで辞書からXMLを生成する方法を徹底解説
Pythonの辞書(dict)オブジェクトからXMLを生成したい場合、dicttoxml パッケージを利用するのが最も手軽な方法です。このライブラリを使えば、複雑な入れ子構造を持つ辞書でも、数行のコードで自動的にXML形式へ変換できます。 dicttoxmlパッケージのインストール まずはpipコマンドでdicttoxmlをインストールしましょう。ターミナルまたはコマンドプロンプトで以下を実行します。 $ pip install dicttoxml インストールが完了したら、すぐにdicttoxmlメソッドを使ってXMLを生成できます。 基本的な使い方:辞書をXMLに変換する 以下の例では、ネ
-
Pythonで24ビットのランダムハッシュを生成する方法
ランダムな24ビットハッシュとは、その名の通り「ランダムに生成された24ビットの値」のことです。暗号学的なハッシュ関数を使う必要はなく、Pythonの標準ライブラリであるrandomモジュールだけで簡単に生成できます。ポイントとなるのは random.getrandbits() 関数です。この関数は、指定したビット数のランダムな整数を返します。引数に「24」を渡せば、0から 2^24 - 1(16,777,215)までの範囲の整数が得られます。さらに hex() 関数を使えば、その整数を16進数表記の文字列に変換でき、一般的なハッシュ値のような見た目になります。実装例import random