📜 information
System.Random prng = new System.Random(seed);
// -1 하는 이유는 'the fisher-Yates' 알고리즘에 마지막 인덱스는 생략해도 되기 때문
for (int i = 0; i < array.Length - 1; i++)
{
int randomIndex = prng.Next(i, array.Length);
T tempItem = array[randomIndex];
array[randomIndex] = array[i];
array[i] = tempItem;
}
return array;
- 배열을 한 바퀴 돌면서 랜덤으로 뽑힌 값을 자신의 인덱스와 교환한다.
- 배열의 마지막 인덱스는 구조상 같은 값으로 유지되기 때문에 생략해도 된다.
- 랜덤 값은 0에서 배열의 크기 사이의 값을 뽑는다.
- 반복문으로 돌면서 랜덤으로 뽑힌 값을 해당 인덱스 값과 바꿔 셔플 한다.
📖 참고 문서
Unity Create a Game Series (E09. obstacle placement)
'Unity' 카테고리의 다른 글
[키워드] operator (0) | 2024.03.17 |
---|---|
[길찾기 알고리즘] Flood Fill (0) | 2024.03.17 |
Destroy vs DestroyImmediate (0) | 2024.03.16 |
Physics.OverlapSphere (0) | 2024.03.16 |
Vector3.Distance vs sqrMagnitude (2) | 2024.03.16 |