내가 만든 작은 게임에 문제가 있습니다.랜덤 동일한 번호 생성
#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 사이의 임의의 숫자를 생성하고 추측을해야합니다. 이 코드를 실행 한 후 동일한 숫자가 심지어 8 번 (내 경우 2 번)을 생성했습니다.
나는 절대 난수가없고 어떤 수학 공식이나 무엇인가를 사용한다는 것을 알고있다. 나는 srand(time(0))
을 사용하면 그것이 현재 시간에 의존한다는 것을 안다. 그러나 내가 어떻게 위에서 "더"무작위로 만들 것인지, 나는 위에서 언급 한 것들이 일어나기를 원하지 않기 때문에.
처음 실행했을 때 결과가 11이었고, 다시 실행 한 후 (올바른 숫자를 추측 한 후) 시간이 변경되었지만 여전히 11이었습니다.
추측 한 후 (몇 초가 지나야 함) 마지막 부분을 방금 업데이트했습니다. 숫자는 여전히 동일합니다. – Marink
TheNumber의 선언을'int TheNumber = rand() % 100 + 1;' – jrok
@jrok, 나쁜 조언으로 변경하십시오. 'rand()'의 하위 비트는 랜덤하지 않습니다. –