2014-04-08 4 views
1

iPhone 용 퀴즈 앱을 만들고 있습니다. 현재 내 질문은 arc4random 기능으로 무작위로 선택됩니다.arc4random 함수를 사용하여 고유 한 값 생성

문제는 각 질문을 한 번만 표시하기를 원합니다. arc4random 함수에서 고유 번호를 생성 한 다음 가능한 모든 숫자가 생성되면 중지하는 방법이 있습니까?

QuestionSelected = arc4random() %4; 

어떤 도움이 좋을 것 :

이 내가 현재 내 임의의 숫자를 생성하기 위해 사용하고 있습니다 것입니다.

+2

하나의 해결책 : 질문의 ID를 사용하여 k 요소의 배열을 만듭니다. 다음 : int index = arc4Randcom() % [theArray count]; [theArray objectAtIndex : index]와 함께 질문을 받게됩니다. 그런 다음 질문을 제거합니다. [theArray removeObjectAtIndex : index]; – Larme

+0

찾고있는 것을 "임의 치환"또는 "랜덤 셔플"이라고합니다. –

+0

Y는 얼마 전에 Larme 방식을 사용했습니다. – jcesarmobile

답변

2
NSMutableArray *questions=[NSMutableArray new]; 
//creating an array to save questions 
// Place in viewDidLoad 
for(;;) { 
    //randomly select question 
    QuestionSelected = arc4random() % 4; 
    //check if question contains this number 
    //if it does - continue looping 
    if(![questions containsObject:@(QuestionSelected)]){ 
     //so it doesn't - we add this number to array 
     [questions addObject:@(QuestionSelected)]; 
     break; 
     //and exit loop 
    } 

} 

그게 모든

+0

코드를 설명하는 것이 좋습니다? – Popeye

+2

얼마나 많은 질문이 있느냐에 따라 무작위로 숫자를 찾으려고 속도를 늦출 수 있습니다 – Flexicoder

+0

나는 이것을 시도했지만 오류가 발생했습니다 "ARC를 사용하여 'int'를 'ID'로 암시 적으로 변환 할 수 없습니다. – Sztucki

1

당신은 질문이있는 NSMutableArray을 사용하고, 질문을 선택하면, 배열에서 제거 할 수있다. 이 경우 0에서 array.count - 1 사이의 임의의 숫자를 생성합니다.