숫자와 함께 문자를 생성하는 GUID 개념을 읽었으므로 C# asp.net에서 반복하지 않고 16 자리 고유 난수를 생성 할 수 있지만 난 acheive 수있는 방법이 친절하게 제시 자에게충돌없이 asp.net에서 임의의 고유 16 자리 숫자를 생성하는 방법
을 원하지 않는 것이
숫자와 함께 문자를 생성하는 GUID 개념을 읽었으므로 C# asp.net에서 반복하지 않고 16 자리 고유 난수를 생성 할 수 있지만 난 acheive 수있는 방법이 친절하게 제시 자에게충돌없이 asp.net에서 임의의 고유 16 자리 숫자를 생성하는 방법
을 원하지 않는 것이
당신은 임의의 클래스를 사용하여 난수 생성 할 수없는 충돌이 당신이 필요 없음을
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();
}
보장을 전 결과를 추적하십시오. sly는 실제로 메모리 누수입니다. (NB는 이것을 사용하지 않는 것이 좋습니다. 이전 결과를 모두 추적하는 것은 좋지 않은 생각입니다. 더 많은 정보를 원하면 16 문자까지 임의의 문자열을 사용하십시오. 고유성, 엔트로피를 증가,하지만 난 그것을 이 할 수있는 방법이) 보여주기 위해 포함되어야한다 : 당신은 반복없이 일련의 숫자를 만드는 경우
private static HashSet<string> Results = new HashSet<string>();
public string CreateUnique16DigitString()
{
var result = Create16DigitString();
while (!Results.Add(result))
{
result = Create16DigitString();
}
return result;
}
그것은 효과가 있었지만 날씨에이 방법을 사용하면 많은 양의 숫자를 생성 할 수 있음을 묻고 싶습니다. (수백만처럼) 재가공 될 것입니다. –
@VivekSingh 내가 제공 할 수있는 것은 확률입니다. 16 자리 숫자의 10^16 조합이 있는데, 이것을 'N'이라고 부르며, 'k'숫자를 생성하면 모두가 유일하다는 확률을 나타냅니다. }}. 10 백만을 k로 사용하면 99.004983473 % –
의 확률을 얻습니다. 해시 세트가 아니라 이전에 반환 된 숫자를 데이터베이스에 쓸 수 있습니까? 검색 할 숫자가 가득 찬 테이블이 여전히 늘어나지 만 이전의 모든 숫자를 해시에 저장하는 것만 큼 큰 부담이되지 않아야합니다. – nedlud
는, 그들은 무작위 수 없습니다. –
1로 시작하고 * (심각하게)를 증가 * –
시리즈를 원하지 않는다. 나는 16 자리 숫자의 완전 난수를 원한다. –