0

私のプログラムがすべてのラウンドで同じ乱数を生成し続ける理由がわかりません。実際、プログラムを終了して再起動しない限り、番号は変わりません。私は C++ を初めて使用するので、これは私が知らないかなり些細な間違いであるはずです。以下は私のコードです。ご協力いただきありがとうございます。

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;

int getRandNum();

int main()
{
    int randNum = getRandNum();

    srand((unsigned int) time(NULL));

.
.
.

}

int getRandNum()
{
    int randNum;

    randNum = rand() % 3 + 1;

    return randNum;
}
4

5 に答える 5

2

randfunction から呼び出しますgetComputerChoice()。ただし、その関数は、でシードを設定する前に呼び出されますsrand

srand関数の最初の呼び出しの前に呼び出す必要がありrandます。これは、前も意味しますgetComputerChoice

于 2013-03-28T08:47:46.110 に答える
2

関数を 1 回だけ呼び出して、computerChoiceこの結果を後続のすべての操作に使用します。

srandまた、 @ZdeslavVojkovic によって正しく言及されたように、乱数発生器に をシードした後に呼び出しを行う必要があります。

于 2013-03-28T08:48:27.317 に答える
0

ループint computerChoice = getComputerChoice();内に移動する必要があります。do上記のコードは、最初に 1 つの選択肢を選んだ後、別の選択肢を選ぶことはありません。

于 2013-03-28T08:52:39.317 に答える
0

getComputerChoice()の下に書き込むだけgetPlayerChoice()で、問題は解決します。

playerChoice = getPlayerChoice();
computerChoice = getComputerChoice();
于 2013-03-28T08:55:16.027 に答える
0

アルゴリズムの問​​題、main() の開始時に getComputerChoice() を 1 回だけ呼び出しますが、do でこれを行う必要があります ... しながら:

...
if(playQuitOption == 'p' || playQuitOption == 'P')
    {
        cout << endl;

        playerChoice = getPlayerChoice();
        computerChoice = getComputerChoice();
...
于 2013-03-28T09:00:47.370 に答える