-1

私はテキストベースのロールプレイングゲームを作ろうとしていますが、現在ダイスロール機能を実装しています:

int diceRoll(){
int n;
srand(time(0));
n = rand() % 4;
return n;
}
int main()
{
    int RandNum = diceRoll();
    cout<< "   Randomly generated number: " + RandNum;
    return 0;
}

それでも、これを出力します:

4

3 に答える 3

5

試す:cout << "Randomly generated number: " << RandNum;

于 2013-03-03T01:50:46.910 に答える
4

あなたは実際に数字を文字列に追加しています...これはあなたが思っていることをしません。実際には、文字列からの計算とアドレスのオフセットが、最初にスペースを追加した理由だと推測しています。おそらく、ストリーム挿入演算子が必要だったでしょう<<:

cout<< "   Randomly generated number: " << RandNum;

srand()さらに、乱数ジェネレーター内で呼び出すのはお勧めできません。なんで?何度もすばやく呼び出すと、time()毎回同じ値が返される可能性があり、rand()毎回同じ値がシードされるため、同じ結果が得られるためです (つまり、あまりランダムではありません)。srand()ほとんどの場合、プログラムの開始時に 1 回呼び出す必要があります。

于 2013-03-03T01:51:55.140 に答える
1

通常、rand() とモジュラスは使用しないでください。それは悪い習慣です。代わりに、 http <random>: //www.cplusplus.com/reference/random/ を使用してください。 または、「c ++ランダムヘッダーの使用」または同様のものをグーグルで検索してください。

于 2014-06-28T06:11:45.650 に答える