rand()函数通过升至上一个数字来生成下一个数字

时间:2019-03-27 14:23:36

标签: c++

请检查下面给出的代码。它为每次执行生成的随机数是前一次执行中上一次生成的数字的增量。

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()
{
    srand(time(NULL));

    cout<<"\n Random Number : "<<rand()<<endl;

    cin.get();
    return 1;
}

请执行5-6次,您会发现每次执行的随机数都在增加,而且彼此之间非常接近。

注意:请使用CodeBlocks或Visual Studio进行检查,而不是在线编译器。

1 个答案:

答案 0 :(得分:-1)

实际上,我找到了解决问题的方法,但仍然可能无法解决我的问题。 无论如何,问题不在于srand()rand()函数,而在于函数time(NULL)。由于我试图在Windows上运行此代码,因此没有使用time(NULL)作为srand()的参数,而是使用GetTickCount(),现在它为每次执行正确地生成了随机数。

#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;

int main()
{
    srand(GetTickCount());

    cout<<"\n Random Number : "<<rand();

    cout<<"\n";
    cin.get();
    return 1;
}