커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
배열 arr을 섞는 더 좋은 방법?
게임개발 종합반 v0
4주차
북마크
박*환
댓글
1
추천
0
조회수
43
조회수
43
답변 완료

강의 4-6에서 배열 arr을 섞기 위해 강사님께서 다음과 같은 코드를 작성하셨습니다.

arr = arr.OrderBy(x => Random.Range(0f, 7f)).ToArray();


제가 이해하기로는 arr의 각 원소에 0 이상 7 미만의 무작위 실수를 대응시켜서 정렬하는 방법 같은데, 극단적인 시나리오를 들자면, 만약 난수 생성기가 고장나거나 단순한 우연으로 인해 난수 생성기에서 같은 수만 계속 나오면 결과적으로 arr이 전혀 섞이지 않게 되는 것 아닌가요?


저라면 다음과 같은 Fischer-Yates 알고리즘을 사용하겠습니다. 각 순열(permutation)이 나올 확률이 모두 같은 것이 특징입니다.

for (int i = 0; i < arr.Length; i += 1)
{
    int j = Random.Range(i, arr.Length);
    if (i != j)
    {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}
취소
 공유
취소
댓글 0
댓글 알림
나의얼굴