2011-08-01 7 views
0

몇 가지 질문을 임의의 순서로 출력하고 싶습니다. 모든 질문을 반복하지 않고 무작위로 질문하는 방법은 무엇입니까?switch 문에서 무작위로 대문자를 선택하는 방법

for(int i=0; i<4; i++) 
{ 
    int question=rand()%4; 
    switch(question) 
    { 
     case 0: 
      NSLog(@"What is your name"); 
      break; 
     case 1: 
      NSLog(@"Who are you"); 
      break; 
     case 2: 
      NSLog(@"What is your name"); 
      break; 
     case 3: 
      NSLog(@"How do you do"); 
      break; 
     case 4: 
      NSLog(@"Are you?"); 
      break; 
    } 
} 
+0

'switch'에서'for' 루프를 제거하는 방법을 묻고 있습니까? – Josh

+2

팁 : "무작위 질문"을 질문 제목으로 사용하는 것은 좋은 생각이 아닙니다. 일부 무작위 질문 만하는 것 같기 때문입니다. "switch 문에서 임의의 경우를 선택하는 방법"과 같은 것이 더 좋았을 수도 있습니다. – mgalgs

답변

5

질문을 배열에 보관하십시오. 질문을 시작할 때 배열을 섞습니다. 이제 반복마다 목록에서 하나의 질문을 가져 와서 질문하고 답변을 얻은 다음 질문이 부족할 때까지 계속하십시오.

+0

더 읽고 나면, 이것이 더 나은 대답이라고 생각합니다. OP의 질문은 매우 모호하지만,이 대답은 그가 찾고있는 질문 일 수 있습니다. –

+1

@ Josh @ Joe @ Carl Norum 나에게 관심을 가져 주셔서 감사합니다. – NCFUSN

1

시드 알고리즘의 필요성을 제거하고 더 나은 알고리즘을 얻으려면 arc4random()을 사용하는 것이 좋습니다. 그렇지 않으면 전화 srand으로 전화를 걸어 rand으로 전화를 겁니다.

+0

이 유용한 정보를 보내 주셔서 감사합니다. 그러나 반복을 완전히 피하는 방법은 무엇입니까? – NCFUSN

+1

네이선 - 나는 @ Marvo의 대답이 당신이 찾고있는 것일 것이라고 생각합니다. –

+0

@Carl Norum 아마 예상대로 결과에 동의합니다. – Joe

4

rand(3)은 낮은 비트에 대해 꽤 짧은 사이클을 갖는 빈약 한 구현으로 유명합니다. 다른 비트를 사용해 보거나 대신 random(3)을 사용하십시오. 사실 OS X의 rand(3) man page은 다음과 같이 말합니다.

이 인터페이스는 random(3)으로 대체되었습니다.

또한 - % 4은 3보다 클 수 없습니다. 따라서 case 4은이 프로그램에서 실행되지 않습니다.

관련 문제