2013-10-08 8 views
-1

추가해야 할 항목이 있으므로 숫자가 계속해서 8이 아니라 1에서 9까지의 숫자 중 하나를 계속 선택하지 않으려면 어떻게해야합니까? 사드란?C에서 1과 9 사이의 임의의 숫자 생성

int main() 
{ 
    int iRand = (rand() % 9+1); 

    if (iRand==1) 
    { 
     cout << "The planet of the day is Mercury!" <<endl; 
     cout << "Mercury is the closest planet to the sun." <<endl; 
    } 
    else if (iRand==2) 
    { 
     cout << "The planet of the day is Venus!" <<endl; 
     cout << "Venus is the hottest planet in our solar system." <<endl; 
    } 
    // .... 3..4..5..6..7..8 

    else 
    { 
     cout << "The planet of the day is Pluto!" <<endl; 
    } 
    return 0; 
} 
+0

'srand()'함수를 보라. –

+0

컴파일러가 C++ 11을 지원한다면,'rand()'를 버리고 새로운 랜덤 기능을 사용하는 것이 현명 할 수 있습니다. 이 질문은 중복 가능성이 높습니다. – goji

+0

괄호()를 볼 필요가있는 것 같습니다. '(rand() % 8) + 1'을 시도하십시오. –

답변

3

먼저 random seed을 초기화해야합니다! rand() 같은

#include <stdlib.h>  /* srand, rand */ 
#include <time.h>  /* time */ 

srand (time(NULL)); 

의사 난수 생성기는 실제로 완전히 무작위로하지 않습니다. 대신 숫자는 시드라고하는 생성기의 초기 상태에 따라 결정됩니다. 현재 존재하는 프로그램은 매 실행마다 동일한 시드를 갖게되므로 매번 동일한 난수가됩니다.

srand() 구조 - 시드를 지정할 수 있습니다.

상수 시드 (예 : srand(2))를 지정하려는 경우 지금과 다른 문제가 발생할 수 있습니다. 따라서 프로그램이 실행될 때마다 서로 다른 결과를 보장하기 위해 현재 시간으로 난수 생성기를 초기화 할 수 있습니다. 따라서 결코 시간을 여행하지 않는 한 똑같은 숫자 시퀀스를 얻을 수 없습니다.

(참고 :.. 누군가가 (예를 들어) 수동으로 다른 시간에 시스템 시계를 재설정 어느 someone did once는 카지노에서 돈을 훔치는하여 과거의 결과를 반복 할 수 있기 때문에 실제 응용 프로그램에서,이 좋은하지 않을 수 있습니다)

+0

예, 당신은 srand가 필요합니다. – ChuckCottrill

+0

+1은 모든 세계의 문제에 대해'rand()'를 비난하지 않는다. –

관련 문제