[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까지의 숫자가 들어갈 것이고, 들어간 숫자는 중복없이 모두 다른 숫자들이 무작위로 섞여있을 것이다.
위 코드를 사용해 나온 무작위의 숫자를 출력해봤다.

중복없이 모든 숫자들이 무작위로 나열된 것을 확인할 수 있다.
랜덤하게 어떤 것을 생성하려는데 중복되는 수가 나오는 것을 방지하고 싶다면!
위 코드를 사용하자.
끝.
반응형