代码之家  ›  专栏  ›  技术社区  ›  Donotalo

rand()不遵守qt creator中的srand()。

  •  4
  • Donotalo  · 技术社区  · 15 年前

    我用qt creator 1.0.0(qt版本4.5.0)编写了一个程序,在main()函数的开头

    srand(time(0));
    

    然后我从另一个线程(qthread的子类)调用rand()。在这个函数中,每次运行程序时rand()都会产生相同的数字序列。我一秒钟内没有多次运行这个程序。

    为什么会这样?

    1 回复  |  直到 10 年前
        1
  •  17
  •   Zed    15 年前

    您需要在每个线程中调用srand,因为种子存储在特定于线程的块中。