回答
如果您想要字典键的“随机”字符串,只需使用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. 生成python中固定长度的随机字符串列表
- 5. 生成一个字符串的随机固定长度排列
- 6. 生成随机字符串
- 7. 随机字符的随机长度字符串
- 8. 生成奇怪字符的随机字符串生成
- 9. 随机字符串生成php
- 10. Python生成随机128位字符串
- 11. 生成字符串的随机序列
- 12. 生成随机字符串,不SecureRandom的
- 13. 生成独特的随机字符串
- 14. Python新手生成随机字符串
- 15. 生成随机字符串的zsh
- 16. Perl - PHP:随机字符串生成
- 17. PHP半随机字符串生成器
- 18. Jython随机字符串生成
- 19. 随机字符串生成器(PHP)
- 20. 无法生成随机字符串
- 21. 生成25个伪随机字符串
- 22. 生成一个随机字符串
- 23. 从字符串生成随机序列
- 24. 生成随机长度的零
- 25. Python - 从正则表达式中生成指定长度的随机字符串
- 26. 在节点中生成自定义长度的唯一随机字符串
- 27. 通过随机字符生成生成随机名字太慢
- 28. 生成随机ASCII字符
- 29. Android随机生成字符
- 30. 由openssl生成的随机字符串并非如此随机。
http://stackoverflow.com/questions/1344221/how-can-i-generate-random-8-character-alphanumeric-strings-in-c – Henry