为什么我们可以在c++;? C++中的P> SRAND(时钟()) 我以前做过一个C++课程,在那个课程中我遇到了这个问题,但是我不知道C++中这个函数的真正含义是什么?

为什么我们可以在c++;? C++中的P> SRAND(时钟()) 我以前做过一个C++课程,在那个课程中我遇到了这个问题,但是我不知道C++中这个函数的真正含义是什么?,c++,c++11,visual-c++,c++-cli,c++builder,C++,C++11,Visual C++,C++ Cli,C++builder,SRand是C标准库中定义的函数,并且它是 将随机数生成器设置为某个起始种子 随机数生成器生成子序列数所做的是获取当前输入,并根据当前值应用一些计算 所有具有给定已知起始种子的未来rand()调用实际上都是确定性的。这就是为什么它被称为“伪随机数生成器” 例如,如果每次启动程序时使用srand(100)——并多次输出rand()——每次运行的整个输出都是相同的 clock()函数的作用是以毫秒为单位获取当前时间,并将其用作起始种子 由于当前时间是不断变化的,并且当前时间的毫秒数不容易确定调用操作

SRand是C标准库中定义的函数,并且它是 将随机数生成器设置为某个起始种子

随机数生成器生成子序列数所做的是获取当前输入,并根据当前值应用一些计算

所有具有给定已知起始种子的未来rand()调用实际上都是确定性的。这就是为什么它被称为“伪随机数生成器”

例如,如果每次启动程序时使用srand(100)——并多次输出rand()——每次运行的整个输出都是相同的

clock()函数的作用是以毫秒为单位获取当前时间,并将其用作起始种子

由于当前时间是不断变化的,并且当前时间的毫秒数不容易确定调用操作clock()的精确时间,--这是一种获得“随机”启动种子的好方法

编辑

clock()实际上返回程序所消耗的处理器时间

你可以看看

您需要对“time.h”中定义的time_t time(time_t*timer)小心一点,因为它不能跨平台移植

但是,不建议使用此srand和rand函数,在定义random类的C++11中不推荐使用。您可以在这里查看:

为什么我们可以使用srand(clock())?因为

  • srand初始化随机数序列
  • 不希望每次在模拟中都得到相同的结果
  • 时钟返回程序消耗的处理器时间

    返回的值以时钟节拍表示

  • main()开始运行时,细粒度和不同


  • C++继承了C标准库。尝试
    man srand
    。。。不确定你所说的“时钟”是什么意思,你指的是
    std::chrono::*\u clock
    ?@rmccabe3701 OP更可能指
    标题中的
    clock
    。请注意,
    rand
    (因此
    srand
    )是不推荐的。改用从C++11开始的