[UNITY/C#] 중복 없는 랜덤 숫자 만들기

2025. 4. 11. 15:06유니티 Unity/C#

반응형

 

 

 

유니티로 이런저런 기능을 만들다보면 한번씩 랜덤 번호를 생성하게 된다.

 

특정 오브젝트의 생성 순서를 무작위로 할 때라던지, 어떤 숫자들을 랜덤으로 뽑고 싶을 때라던지.

그렇게 랜덤으로 번호를 생성하는데, 그 와중에 또 숫자가 중복되지 않게 뽑고 싶을 때가 있다.

 

그럴 때 사용하려고 만들어둔 함수를 남겨본다.


public int[] MakeRandomNumbers(int minValue, int maxValue, int randomSeed = 0)
    {
        if (randomSeed == 0)
            randomSeed = (int)DateTime.Now.Ticks;

        List<int> values = new List<int>();
        for (int v = minValue; v < maxValue; v++)
        {
            values.Add(v);
        }

        int[] result = new int[maxValue - minValue];
        System.Random random = new System.Random(Seed: randomSeed);
        int i = 0;
        while (values.Count > 0)
        {
            int randomValue = values[random.Next(0, values.Count)];
            result[i++] = randomValue;

            if (!values.Remove(randomValue))
                break;
        }

        return result;
    }

 

int 배열을 반환하는 함수로,

 

int[] randNumberArr = MakeRandomNumbers(0, 100);

 

이렇게 사용한다.

이렇게 하면 randNumberArr 에는 0~99까지의 숫자가 들어갈 것이고, 들어간 숫자는 중복없이 모두 다른 숫자들이 무작위로 섞여있을 것이다.

위 코드를 사용해 나온 무작위의 숫자를 출력해봤다.

 

중복없이 모든 숫자들이 무작위로 나열된 것을 확인할 수 있다.

 

랜덤하게 어떤 것을 생성하려는데 중복되는 수가 나오는 것을 방지하고 싶다면!

위 코드를 사용하자.

 

끝.

 

 

 

반응형