回答
如果您想要字典鍵的「隨機」字符串,只需使用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碼,但是咩。
GUID不是隨機的,它們是獨一無二的!如果您在需要隨機性的地方使用它們,那麼您正在做的事情非常錯誤。
隨機數據生成有幾種選擇,但這裏的問題是:是什麼意思?滾動骰子?加密國家機密?
在我的情況下,只是爲了生成一些字典的隨機密鑰。 –
@DotNETNinja爲什麼不只是增加一個數字或使用一個Guid? –
@DNETNETNinja:好吧,既然你想要鑰匙,那麼你真的*不關心他們的價值;你只關心他們是獨一無二的。不是隨機的,只是唯一的。因此,GUID將是一個不錯的選擇,同樣會增加整數。 – Jon
我曾經做過一個「隨機」密碼生成器,它看起來像這樣。你可以隨意修改它,這裏可能有一些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;
}
}
正如你看到的,它基本上創建字符的列表<>,然後從列表中找到您想要的字符的每個數字隨機選取。
- 1. 生成隨機x位字符串
- 2. 從給定字符生成等長的固定長度的隨機字符串
- 3. 生成一個字符串的隨機固定長度排列
- 4. 生成隨機字符串
- 5. 隨機字符的隨機長度字符串
- 6. 隨機字符串生成php
- 7. PHP半隨機字符串生成器
- 8. Jython隨機字符串生成
- 9. 無法生成隨機字符串
- 10. Python新手生成隨機字符串
- 11. 生成25個僞隨機字符串
- 12. 隨機字符串生成器(PHP)
- 13. 生成隨機字符串,不SecureRandom的
- 14. Perl - PHP:隨機字符串生成
- 15. 生成一個隨機字符串
- 16. Python生成隨機128位字符串
- 17. 從字符串生成隨機序列
- 18. 生成隨機長度的零
- 19. Python - 從正則表達式中生成指定長度的隨機字符串
- 20. 在節點中生成自定義長度的唯一隨機字符串
- 21. 通過隨機字符生成生成隨機名字太慢
- 22. Android隨機生成字符
- 23. 生成隨機ASCII字符
- 24. 使用QuickCheck從字符串池中生成隨機字符串
- 25. 從C#中的字符串列表生成隨機字符串?
- 26. PHP隨機字符串生成器...並非如此隨機
- 27. 從隨機長生成隨機數
- 28. 生成具有隨機行長度的隨機二維數組
- 29. 生成隨機值1/X
- 30. 生成隨機數:計算隨機生成的x次數
http://stackoverflow.com/questions/1344221/how-can-i-generate-random-8-character-alphanumeric-strings-in-c – Henry