2017-12-17 21 views
-1

私はクラスの関数int ComputerClass::getGuess()を呼び出すたびにランダム化された数値を生成する必要があります。私の主な機能では、私はクラスComputerClass Computer1,Computer2の2つの機能を作成し、クラスの機能と呼ばれる、しかし、それは、各呼び出しで同じ番号を返します。以下はシード値のランダム化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; 
} 

クラスのメンバ関数であります私の問題はシード値だと仮定していますが、それを設定する方法がわからないので、呼び出されるたびにその番号がランダムになります。

+0

プログラムの先頭で 'srand'を一度呼び出します。あなたが同じ番号でそれを呼び出すたびに、あなたが得る次の価値は同じになります。 –

+0

'getGuess()'が呼び出されるたびにではなく、 'srand()'がプログラム全体で一度だけ呼び出されるように設定します(時間の経過とともに2つの呼び出しが同じ値を返す可能性があります。 'time()'の値が悪い)。また、C++ 11以降では、ランダムな値を生成するためのより良い選択肢を見て、 – Peter

答えて

0

プログラム全体に対してsrandを一度だけ呼び出すようにしてください。時間(NULL)を非常に迅速に2回呼び出すと、時間がCPUより遅くなるため、通常は同じ値が返されます。

srandを呼び出した後、randを呼び出すたびに別の値が返されます。

関連する問題