为什么我们可以在c ++中使用srand(clock())?

时间:2018-06-10 04:47:27

标签: c++ c++11 visual-c++ c++-cli c++builder

c ++中的srand(clock())? 我以前用c ++开设了一门课程。在那个特定的课程中,我遇到了这个问题。但是我不知道这个函数在c ++中的真正含义是什么?

2 个答案:

答案 0 :(得分:1)

srand是C标准库中定义的函数 将随机数生成器设置为某个起始种子。

随机数生成器生成子序列号是什么,它是否需要当前输入并根据当前值应用一些计算。

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

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

现在clock()函数做了什么,它是以毫秒为单位的当前时间,并将其用作起始种子。

由于当前时间是不断变化的,并且当前时间的毫秒不容易确定在调用操作clock()的精确时间它是什么, - 这是一种好方法得到一个"随机"开始种子。

修改

clock()实际上回退了程序消耗的处理器时间。

您可以查看How to get current timestamp in milliseconds since 1970 just the way Java gets

在" time.h"中定义的time_t time(time_t * timer)需要注意一点。因为它不能跨平台移植。

不建议使用此srand和rand函数,并且在C ++ 11中不推荐使用它,后者定义了随机类。您可以在这里查看:http://en.cppreference.com/w/cpp/numeric/random

答案 1 :(得分:1)

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

  1. srand初始化随机数序​​列。
  2. 每次模拟时都不希望得到相同的结果。
  3. 时钟返回程序消耗的处理器时间。

    返回的值以时钟周期表示。

  4. 当main()开始运行时,细粒度和不同。