4

c# asp.net で繰り返しなしで 16 桁の一意の乱数を生成するにはどうすればよいですか?

それを達成する方法はありますか

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 に答える