C ++中的Random int

时间:2014-05-10 11:31:33

标签: c++ visual-studio random

我刚刚在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;
}

屏幕截图:http://tinyurl.com/n49hn3j

3 个答案:

答案 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

这也适用于您的随机。