>백엔드 개발 >C++ >C#에서 정말 고유한 난수를 생성하는 방법은 무엇입니까?

C#에서 정말 고유한 난수를 생성하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-21 13:01:14213검색

How to Generate Truly Unique Random Numbers in C#?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.