如何在c#asp.net中生成16位唯一随机数而不重复,因为我已经阅读了GUID的概念,它生成字符和数字,但我不想要字符
请建议有没有办法实现它
答案 0 :(得分:5)
您可以使用Random类创建一个随机数:
private static Random RNG = new Random();
public string Create16DigitString()
{
var builder = new StringBuilder();
while (builder.Length < 16)
{
builder.Append(RNG.Next(10).ToString());
}
return builder.ToString();
}
确保没有冲突需要您跟踪之前返回的所有结果,这实际上是内存泄漏(注意我不建议您使用此功能 - 跟踪所有以前的结果是一个坏主意,依赖于最多16个字符的随机字符串的熵,如果你想要更多的唯一性,增加熵,但我将包括它以显示它可以如何完成):
private static HashSet<string> Results = new HashSet<string>();
public string CreateUnique16DigitString()
{
var result = Create16DigitString();
while (!Results.Add(result))
{
result = Create16DigitString();
}
return result;
}