【问题标题】:How can I generate a random number in c++? [duplicate]如何在 C++ 中生成随机数? [复制]
【发布时间】:2020-04-19 00:16:17
【问题描述】:

我正在尝试使用可以生成随机数的rand()。但是,我发现每次编译时代码都会给出相同的数字。 代码如下:

#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
    int a = rand() % 11;
    cout << a;
    return 0;
}

【问题讨论】:

  • 你可以使用srand(time(0))函数作为种子。如果你不使用 C++11 或更高版本。
  • @ShadowMitia 我试过这个,但它不适合我的编译器。感谢您的帮助!
  • @SCMS 您可以尝试添加 -std=c++11 以使其工作,除非您不能使用 c++11 及更高版本。但是 C++11 会让你的生活更轻松。
  • @SCMS 你的编译器是什么。大多数现代编译器已经支持 C++11

标签: c++


【解决方案1】:

您可以做的是在 main 的顶部包含:#include&lt;time.h&gt; 并使用 srand。这将纠正此问题,因为它将指定生成器的种子。

// top of main
srand(static_cast<unsigned int>(time(0)));

time(0) 为您提供自 1970 年 1 月 1 日以来经过的秒数。这提供了一个很好的种子。

当您有时间查看&lt;random&gt; 标头here

【讨论】:

    【解决方案2】:

    每次运行文件时,您必须对其进行至少 1 次更改才能获得随机数:

    #include<iostream>
    #include<cstdlib>
    #include<ctime>
    using namespace std;
    int main()
    {
        srand(time(0));
        int random = rand();
        cout << "Seed = " << time(0) << endl;
        cout << "Random number = " << random << endl;
    return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2016-08-20
      相关资源
      最近更新 更多