c# asp.net で繰り返しなしで 16 桁の一意の乱数を生成するにはどうすればよいですか?
それを達成する方法はありますか
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;
}