文字と数字を含む X の長さのランダムな文字列を作成する方法。私の迅速な解決策は次のとおりです。
Guid.NewGuid().ToString("N").Substring(X);
他に良いアイデアはありますか?
文字と数字を含む X の長さのランダムな文字列を作成する方法。私の迅速な解決策は次のとおりです。
Guid.NewGuid().ToString("N").Substring(X);
他に良いアイデアはありますか?
GUIDはランダムではなく、一意です。ランダム性が必要な場所でそれらを使用している場合は、非常に間違ったことをしています。
ランダムデータ生成にはいくつかのオプションがありますが、ここでの問題は、それが何を意味するのかということです。サイコロを振る?状態の秘密を暗号化しますか?
辞書キーに「ランダムな」文字列が必要な場合は、単純にGuid
. それらは一意であり、キーイング辞書には十分すぎるほどです。
警告、コーディングして一度実行しました-それ以外はテストされていません。現在のソリューションに対するパフォーマンスは定量化されていません。また、この実装は、質問のコメントにリンクされている回答よりもはるかに冗長です。
static void Main(string[] args)
{
Random r = new Random();
int x = r.Next(1, 1000);
char[] pool = new[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
char[] word = new char[x];
for (int i = 0; i < x; i++)
{
// max value is not inclusive, so no -1 from length.
int a = r.Next(pool.Length);
word[i] = pool[a];
}
Console.WriteLine(new string(word));
Console.ReadLine();
}
おそらく、ASCII コードを使用してこれを行うより良い方法がありますが、まぁ。
私はかつて「ランダムな」パスワードジェネレーターを作成しましたが、このように見えました. 好きなように変更できます。おそらく、ここに linq 式を入れる余地があります。
public static string GeneratePassWord(bool useNumbers,bool useLetters, bool useUpperAndLowerCase, bool useSpecialCharacters, int passwordLength)
{
Random randomNumber = new Random();
List<char> chars = new List<char>();
if (useNumbers) // Add numbers
{
for (int i = 0; i <= 9; i++)
{
chars.Add((char)(48 + i));
}
}
if (useLetters) // Add letters
{
for (int i = 0; i <= 25; i++) // Small letters
{
chars.Add((char)(97 + i));
}
if (useUpperAndLowerCase)
{
for (int i = 0; i <= 25; i++) // Large letters
{
chars.Add((char)(65 + i));
}
}
}
if (useSpecialCharacters) // Add specials
{
chars.Add((char)'!');
chars.Add((char)'#');
chars.Add((char)'%');
chars.Add((char)'&');
chars.Add((char)'_');
chars.Add((char)'.');
chars.Add((char)'+');
chars.Add((char)'@');
chars.Add((char)'$');
}
// Generate random password from char
if (chars.Count > 0)
{
StringBuilder newPass = new StringBuilder();
for (int i = 0; i <= passwordLength; i++)
{
newPass.Append(chars[randomNumber.Next(chars.Count)]);
}
return newPass.ToString();
}
else
{
return string.Empty;
}
}
ご覧のとおり、基本的には文字の List<> を作成し、必要な文字数ごとにリストからランダムに選択します。