2009-11-01 5 views
0

저는 iPhone 프로그래밍을 처음 사용합니다. 나는 숫자가 (1,2,3,4,5,6,7,8,9,10)이라고 말하고있다. 위의 10 개의 숫자 중 1 개의 숫자를 무작위로 선택하고 싶습니다. 숫자 집합에서 임의의 숫자를 선택하려면 어떻게합니까?임의의 값 선택

답변

2

, 표준 C rand() 방법을 사용할 수 있습니다. 0과 RAND_MAX 사이의 정수를 반환합니다.

0에서 9 사이의 값을 얻으려면 % 연산자를 사용할 수 있습니다. 당신이 사용할 수있는 1 ~ 10 그래서 값을 얻을 수 있습니다 :

rand()%10 + 1 

할 때마다 의사 난수의 같은 시리즈를 원하지 않는 경우, 당신은 난수 생성기를 srand를 사용해야합니다. 그것을 씨 뿌리기위한 좋은 가치는 현재 시간입니다.

임의의 (또는 연속적이지는 않은) 숫자 목록에서 번호를 선택하는 방법에 대해 질문하는 경우 다음을 사용할 수 있습니다.

int numbers[] = {2,3,5,7,11,13,17,19,23,29}; 
int randomChoice = numbers[rand()%10]; 
+0

을 제안하십시오. 각 숫자에 대해 동일한 숫자가 선택 될 가능성을 원하신다면,'%'를 사용하지 마십시오! – Joey

+0

RAND_MAX가 일반적으로 꽤 거대하기 때문에 확률에 아주 작은 편차가있을 가능성이 높습니다. –

+0

* "임의 번호를 얻는 방법을 보여주세요"* - "여기"- * "조심해, 고마워."* - "예, 분배가 일정하지 않지만 중요하지 않습니다" * * "중요하지 않니? 이봐, 난 여기에 10 억 개의 가치를 만들어 내고있어, 그건 중요하지 않다고하니?"... ... 그렇지 않다면 옳은 것을 얻기가 어렵지 않다. OP의 요구 사항에 대해 많이 아는 것이 열등한 대답을주지는 않습니다. – Joey

0

임의의 숫자를 생성하려면 random() 함수를 사용해야합니다. 하지만 전화를 두 번하면 두 개의 똑같은 답을 얻을 수 있습니다. random()을 호출하기 전에 srand (time())를 호출하여 새로운 새로운 난수를 얻습니다. 숫자를 만들기 위해 (int i = 0; ...)을 사용하려는 경우 은 srand (time() + i)를 사용합니다. 이 같은

+2

random()의 seed 함수는 srandom()입니다. 따라서 random()과 srandom() 또는 rand()와 srand()를 사용하지만 둘을 섞지 마십시오. 일반적으로 임의의 알고리즘이 조금 더 좋기 때문에 random()을 사용하는 것이 좋습니다. –

0

뭔가 : 당신은 단순히 1과 10 사이의 값을 원하는 경우

- (IBAction)generate:(id)sender 
{ 
    // Generate a number between 1 and 10 inclusive 
    int generated; 
    generated = (random() % 10) + 1; 

} 
+0

10 개의 숫자에서 임의의 숫자를 선택하고 싶다면 (random() % 10) +1을 사용하고 싶은지 여부. 그렇다면 네 개의 숫자 만 있으면 다음 공식 (random() % 4) +1을 사용합니다. – Rupesh