我刚刚在C ++中编写了下面的代码,但我有一个问题:它的随机数始终是相同的.. !! 这是我的代码和截图:
#include <iostream>
using namespace std;
int main() {
cout << "I got a number in my mind... can you guess it?" << endl;
int random;
random = rand() % 20 + 1;
cout << random << endl;
system("pause");
return 0;
}
答案 0 :(得分:7)
srand(time(0))
只会在您上次使用的同一秒内没有启动时产生新的随机数。还有issues with using rand() % 20。这样做是正确的:
#include <iostream>
#include <random>
int main(){
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_int_distribution<int> dist(1, 20);
std::cout << dist(mt);
}
答案 1 :(得分:0)
您需要使用srand
函数初始化(播种)随机数。 more info
#include <iostream>
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
using namespace std;
int main() {
// Seed the random number generator
srand(time(0));
cout << "I got a number in my mind... can you guess it?" << endl;
int random;
random = rand() % 20 + 1;
cout << random << endl;
system("pause");
return 0;
}
答案 2 :(得分:0)
请改为尝试:
#include <ctime> //for current time
#include <cstdlib> //for srand
srand (unsigned(time(0))); //use this seed
这也适用于您的随机。