C#
 Computer >> コンピューター >  >> プログラミング >> C#

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など暗号学的に強い乱数を使うことも検討するとよいでしょう。

  1. Pythonで辞書からXMLを生成する方法を徹底解説

    Pythonの辞書(dict)オブジェクトからXMLを生成したい場合、dicttoxml パッケージを利用するのが最も手軽な方法です。このライブラリを使えば、複雑な入れ子構造を持つ辞書でも、数行のコードで自動的にXML形式へ変換できます。 dicttoxmlパッケージのインストール まずはpipコマンドでdicttoxmlをインストールしましょう。ターミナルまたはコマンドプロンプトで以下を実行します。 $ pip install dicttoxml インストールが完了したら、すぐにdicttoxmlメソッドを使ってXMLを生成できます。 基本的な使い方:辞書をXMLに変換する 以下の例では、ネ

  2. Pythonで24ビットのランダムハッシュを生成する方法

    ランダムな24ビットハッシュとは、その名の通り「ランダムに生成された24ビットの値」のことです。暗号学的なハッシュ関数を使う必要はなく、Pythonの標準ライブラリであるrandomモジュールだけで簡単に生成できます。ポイントとなるのは random.getrandbits() 関数です。この関数は、指定したビット数のランダムな整数を返します。引数に「24」を渡せば、0から 2^24 - 1(16,777,215)までの範囲の整数が得られます。さらに hex() 関数を使えば、その整数を16進数表記の文字列に変換でき、一般的なハッシュ値のような見た目になります。実装例import random