2011-12-02 2 views

답변

6
#include <stdlib.h> 

// ... 

int i; 

do { 
    i = rand() % 10 + 1; // generate random number from 1 to 10 
} while (i == 5);  // repeat until number != 5 
+0

좋은 답변이지만 임의의 시드에 관계없이 임의의 숫자를 생성하기 때문에 arc4random()을 사용하면 훨씬 더 좋습니다. rand()를 고유 한 시드없이 사용하면 매번 동일한 결과가 생성됩니다. 앱이 실행됩니다. – zaph

+2

저는 개발자가 주관적이라고 생각합니다. 매번 동일한 순서의 난수를 원하면 어떻게 될까요? – Danny

+1

@ 대니 : +1 - 프로그램을 실행할 때마다 고유 한 순서에 대한 질문에서 어떤 요구 사항도 보이지 않았습니다. 또한'rand()'는 더 이식성이 있으며 필요한 경우 적절한 시드로'srand()'를 호출하는 것은 상대적으로 쉽지 않습니다. –

2

간단한 해결책은 시스템 기능을 사용하여 1-10 사이의 난수를 생성하는 것이며 간단한 경우가 될 때까지 다시 생성합니다. 이 솔루션은 iPhone 배터가 죽을 때까지 함수가 복귀하지 않을 가능성이 아주 적습니다. :) 대안 다른 해결책은 I 번째처럼 5-9 6-10

int GenRandomNumber() 
{ 
    int x = GetSystemRandomBetween1and9(); 
    if (x >= 5) 
     x += 1; 
    return x; 
} 
+0

1-9 사이의 시스템 기능을 이용하여 난수를 생성하고 매핑

이하 나열된 솔루션, 그 생각하지 않았다. +1 –

+0

5-10을 6-10으로 매핑하는 방법을 예를 들어주세요, 나는 아이폰을 처음 사용합니다. – NoviceDeveloper

+1

답변을 업데이트했습니다. 당신은 자신의 구현해야 ** GetSystemRandomBetween1and9 ** –

6
int x = arc4random()%9; 
x += x>=4? 2 : 1