중복되지 않는 난수 알고리즘 해석 부탁드립니다.
다한
2023.04.01
질문 제목 : 구글링해서 찾은 알고리즘인데... 이해가 안가네요....자세한 설명 부탁드립니다. (--)(__);;질문 내용 :
int j,m;
int scard;
int *x = &scard;
for ( j = 0 ; j scard; j++)
x[j] = j;
for ( j = 0; j scard; j++)
{
int tmp = 0;
int k = 0;
int l = 0;
for( m = 0; m 8; m++)
{
tmp += rand() (32 - ((m + 1) * 4));
}
k = (tmp % (scard - j)) + j;
l = x[j];
x[j] = x[k];
x[k] = l;
}
free(x);
가져 온 곳에서는 간략하게... 선택된 배열 인덱스 옆의 인덱스를 가져온다고 하던데...
어떻게 되는건지 도저히 이해가 안갑니다.
참고로 int *x = &scard; 이부분은 원래 코드가 c++코드로 짜여 있었습니다.(원본 코드: int *x =new int [scard];
c로 바꾸다 보니 int *x = &scard; 이렇게 했는데... 이것도 솔직히 맞는지 잘 모르겠습니다.
고수님들 해석 부탁드립니다.
감사합니다!!!