2010-01-16 6 views
0

퀴즈 질문으로로드 한 NSArray를 무작위로 지정해야하지만 특정 순서로 요소를 유지해야합니다.randomize NSArray

답변

0

NSArray는 변경 불가능한 개체입니다. 즉, 요소의 순서를 변경할 수 없습니다. 나는 네가 무엇을 얻고 있는지 생각해. 이 배열의 요소를 무작위로 선택하려면 데이터 구조의 일부 기능을 씁니다. 이미 액세스 한 요소를 추적하여 다시 선택하지 않아야합니다.

NSMutableArray 하위 유형을 사용하여 배열 복사본을 만들 수도 있습니다. 질문이 선택되면 배열에서 제거하십시오 (배열이 변경 가능하기 때문에이 작업을 수행 할 수 있습니다)

난수에 C 함수를 사용합니다. rand() 및 srand()를 참조하십시오.

+0

Objective-C의 경우 rand() 및 srand() 대신 arc4random()을 제안합니다. –

0

질문을 올바르게 이해하면 질문의 배열이 있는데, 그 중 일부만 (아마도 고정 된 크기일까요?) 표시하고 싶지만 그 하위 집합을 유지해야합니다. 원래 배열 에서처럼?

N 개의 질문을 갖고 있으며 M 개를 무작위로 선택한다고 가정 해 보겠습니다. 원래 배열에 인덱스를 저장하는 요소 배열 [0 .. (N - 1)]을 만들 수 있습니다. 그런 다음 Knuth/Fisher-Yate's algorithm을 사용하여이 배열을 뒤섞고 첫 번째 M 요소를 정렬 한 다음 첫 번째 M 인덱스를 사용하여 원래 배열을 조회합니다.