2017-12-17 39 views
-1

클래스 함수 int ComputerClass::getGuess()을 호출 할 때마다 임의의 숫자가 생성되어야합니다. 다음은시드 값 무작위 화 C++

cout << Computer1.getGuess()<<endl; 
cout << Computer2.getGuess()<<endl; 

int ComputerClass::getGuess() 
{ 
    //Generate randomn number 
    srand(time(NULL)); 
    generatednumber = rand() % 100 + 1; 

    //return computers randomly generated # 
    cout <<"--(Computer)Please enter a guess between 1-100: "<< 
    generatednumber<<endl; 

    return generatednumber; 
} 

내가 '클래스 멤버 함수입니다 : 내 주요 기능에서 나는, 그러나 그것은 각각의 호출에 대해 동일한 번호를 반환 클래스 ComputerClass Computer1,Computer2 2 개 기능을 생성 클래스 함수를 호출 내 문제는 시드 값이라고 가정하고 있지만, 전화를 걸 때마다 번호를 임의로 만드는 방법을 모르겠습니다.

+0

프로그램의 시작 부분에서'srand'를 한 번 호출하십시오. 같은 번호로 전화 할 때마다 얻을 수있는 다음 값은 동일합니다. –

+0

'getGuess()'가 호출 될 때마다가 아니라'srand()'가 전체 프로그램에서 한 번만 호출되도록 설정하십시오 (이는 두 번의 호출이 동시에 닫혀 같은 시간에 동일한 값을 반환 할 수 있습니다. 'time()'의 값이 나쁨). C++ 11 이상에서는 무작위 값을 생성하는 더 나은 대안을 찾아보고, – Peter

답변

0

전체 프로그램에 대해 한 번만 srand를 호출해야합니다. 시간 (NULL)을 매우 빠르게 두 번 호출하면 시간이 CPU보다 느리게 바뀌기 때문에 대개 동일한 값을 반환합니다.

srand를 호출하면 rand를 호출 할 때마다 다른 값이 반환됩니다.