Рэнд генерирует одинаковые числа
У меня проблема с маленькой игрой, которую я сделал.
#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, хотя время изменилось.