using System; public static class AlphabetManager { private static readonly string Alphabets = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; /// <summary> /// 指定された長さのランダムなアルファベット文字列を生成します。 /// デフォルトでは文字列の長さは5です。 /// </summary> /// <param name="length">生成するアルファベット文字列の長さ。</param> /// <returns>指定された長さのランダムなアルファベット文字列。</returns> public static string GetRamdomAlphabet(int length = 5) { // 乱数生成器のインスタンス Random random = new(); // 指定されたアルファベット文字列を指定された回数だけ繰り返し、 // それぞれからランダムに1文字ずつ選び、新しい文字列を生成する string result = ""; for (int i = 0; i < n; i++) { result += txt[random.Next(txt.Length)]; } return result; } }
using System; using System.Linq; public static class AlphabetManager { private static readonly string Alphabets = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; /// <summary> /// 指定された長さのランダムなアルファベット文字列を生成します。 /// デフォルトでは文字列の長さは5です。 /// </summary> /// <param name="length">生成するアルファベット文字列の長さ。</param> /// <returns>指定された長さのランダムなアルファベット文字列。</returns> public static string GetRamdomAlphabet(int length = 5) { // 乱数生成器のインスタンス Random random = new(); return new string(Enumerable.Repeat(Alphabets, length) .Select(alphabet => alphabet[random.Next(alphabet.Length)]) .ToArray()); } }
// 上記処理を LINQ で置き換えた場合 return new string(Enumerable.Repeat(Alphabets, length) .Select(alphabet => alphabet[random.Next(alphabet.Length)]) .ToArray());
using System.Text; /// <summary> /// 指定された長さのランダムなアルファベット文字列を生成します。重複なしバージョン。 /// デフォルトでは文字列の長さは5です。 /// </summary> /// <param name="length">生成するアルファベット文字列の長さ。</param> /// <returns>指定された長さのランダムなアルファベット文字列。</returns> public static string GetRandomUniqueAlphabet(int length = 5) { Random random = new(); // 選択した文字を保持するためのHashSet HashSet<char> selectedChars = new HashSet<char>(); // 文字列の長さがアルファベットの種類数を超える場合は、種類数に合わせる length = Math.Min(length, Alphabets.Length); // StringBuilderのインスタンスを作成 StringBuilder resultBuilder = new StringBuilder(); // 選択された文字が指定の長さに達するまで繰り返す while (selectedChars.Count < length) { // アルファベット文字列からランダムに1文字選ぶ char selectedChar = Alphabets[random.Next(Alphabets.Length)]; // 重複を防ぐため、HashSetに追加できた場合のみ保持する if (selectedChars.Add(selectedChar)) { // selectedChar がまだ選択されていない場合は結果に追加する resultBuilder.Append(selectedChar); } } // 文字列を作成して戻す return resultBuilder.ToString(); }
/// <summary> /// 指定された長さのランダムなアルファベット文字列を生成します。重複なしバージョン。 /// デフォルトでは文字列の長さは5です。 /// </summary> /// <param name="length">生成するアルファベット文字列の長さ。</param> /// <returns>指定された長さのランダムなアルファベット文字列。</returns> public static string GetRandomUniqueAlphabet(int length = 5) { Random random = new(); length = Math.Min(length, Alphabets.Length); // LINQを使用して重複なしのランダムな char[] 配列を生成(この時点では文字列(string)ではない) char[] result = Enumerable.Range(0, length) .Select(_ => Alphabets[random.Next(Alphabets.Length)]) .Distinct() .ToArray(); // char 配列から新しい文字列(string)を作成して戻す return new string(result);