[완료] 빠른 shuffle 알고리즘이 어떤게 있을까요?
글쓴이: lee3390 / 작성시간: 목, 2007/02/22 - 10:50오전
0~29999까지의 수, 30000개의 수를 shuffle을 해야하는데
어떤 방법이 가장 빠를련지 질문 드립니다.
30000개의 배열 만들어서 중복검사해서 할라하니 29999개를 뽑아내고 마지막 하나 남았을 때
잘못하면 무한루프가 돌 것 같고..
그래서 고민하다보니 차라리 30000개짜리의 linked list를 만들어서
처음에 30000개의 수에서 난수 생성해서 linked list에서 하나 뽑고 그다음은 29999개의 수에서 난수 생성해서 또 뽑아내고 하는게 가장 괜찮을 것 같은데..
이 방법 말고 쉽고 간단한 방법이 있을까요?
Forums:
저는... 난수 뽑아서
저는... 난수 뽑아서 난수만큼 next_permutation 돌립니다.
C++ 만세! STL 만세!
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
0~29999 까지 그냥
0~29999 까지 그냥 순서대로 배열 만들고,
루프돌면서 random 하게 swap 시키면 어떨까요?
가장 확실한 방법이죠.
과제물 제출용이 될지도 모르지만... 일단 코드 첨부합니다.
shuffle
그냥 이렇게하면 되지않을까요..?
for (i = 29999; i; i--) {
j = rand() % i;
swap(num[j], num[i]);
}
WHAT'S UP
답변 감사합니다.
과제가 아니고요 제가 만드는게 있는데
만든 플그램을 시뮬레이팅 하기위해선 저 알고리즘이 필요해서요..
여기저기 뒤져보니까 stl 에 random_shuffle이란것이 있네요
여러 답변 감사합니다 ^_^
댓글 달기