私が作った小さなゲームに問題があります。
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int span = 100;
srand(time(0));
int TheNumber = static_cast<double> (rand()) /RAND_MAX * (span -1) +1;
cout << "You need to guess the number between 1 and " << span << endl;
int mynumber;
int numberofAttempts = 0;
do {
cout << ++numberofAttempts <<" Attempt: ";
cin >> mynumber;
if (mynumber > TheNumber)
cout <<"Lower!" << endl;
else if (mynumber < TheNumber)
cout <<"Higher!" << endl;
} while (mynumber != TheNumber);
cout << "SUCESS!!!" << endl;
return 0;
}
ゲームは 0 から 100 の間の乱数を生成することになっていて、それを推測することになっています。このコードを 15 ~ 20 回実行した後、同じ数字が 8 回も生成されました (私の場合は 2)。
絶対的な乱数はなく、数式または何かを使用して乱数を取得することを知っています.使用srand(time(0))
すると、現在の時間に依存することがわかります. しかし、私が上で述べたことを起こさせたくないので、どうすればそれを「もっと」ランダムにすることができますか。
初めて実行したときの結果は 11 でした。もう一度実行した後 (正しい数字を推測した後)、時間が変わっても 11 のままでした。