4

我如何在 c#asp.net 中生成 16 位唯一随机数而没有任何重复,因为我已经阅读了 GUID 的概念,它生成字符和数字但我不想要字符

请建议有什么方法可以实现它

4

1 回答 1

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;
}
于 2013-02-15T09:51:55.637 回答