C#에서 고유한 임의 값을 생성하는 효과적인 방법
고유한 난수를 생성하는 것은 많은 프로그래밍 시나리오에서 일반적인 요구 사항입니다. 그러나 기본 System.Random
클래스를 사용해도 특히 범위가 작은 경우 고유성이 보장되지 않습니다.
Random.Next()의 한계
Random.Next()
메서드는 주어진 범위 내에서 고유한 값을 생성하도록 설계되지 않았습니다. 지정된 범위 내에서 임의의 정수를 생성하며, 특히 범위가 작은 경우 중복된 숫자가 생성될 수 있습니다.
시드 값 사용
DateTime.Now.Ticks.GetHashCode()
과 같은 시드 값을 사용하는 것은 Random
와 같은 무작위성을 개선하는 일반적인 방법입니다. 그러나 여전히 중복 번호 생성 가능성이 제거되지는 않습니다.
더 나은 솔루션
Random.Next()
에 의존하는 대신 다음 방법을 사용하여 고유한 난수를 생성하는 것을 고려해 보세요.
<code class="language-csharp">public class RandomGenerator { private readonly Random _random; private HashSet<int> _uniqueValues; public RandomGenerator() { _random = new Random(); _uniqueValues = new HashSet<int>(); } public int GetUniqueNumber(int min, int max) { int randomNumber; do { randomNumber = _random.Next(min, max); } while (_uniqueValues.Contains(randomNumber)); _uniqueValues.Add(randomNumber); return randomNumber; } }</code>
이 방법은 HashSet
을 사용하여 생성된 값을 저장합니다. GetUniqueNumber
메서드는 지정된 범위 내에서 고유한 값을 찾을 때까지 반복적으로 난수를 생성합니다. 이는 Random
클래스를 계속 사용하는 동안 고유성을 보장합니다.
위 내용은 C#에서 정말 고유한 난수를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!