已读62%
预计阅读本页时间:-
预计阅读本页时间:-
自动重置种子
如果您的C实现允许您访问系统时钟这样不断变化的量,可以用它们的值(可能需要截断)来初始化种子值。例如,ANSI C有一个函数time()可以返回系统时间。时间单位由系统决定,但有用的一点是返回值为数值类型,并且随着时间变化。其确切类型与系统有关,名称为time_t,但您可以对它进行类型指派。下面是基本思路:
通常,time()的参数是一个time_t类型对象的地址。那种情形下,时间值也存储在那个地址中。然而,您也可以传送空指针(0)作为参数。此时,时间值仅通过返回值机制提供。
可以对标准的ANSI C函数srand()和rand()使用同样的技术。使用这些函数时,要包含stdlib.h头文件。实际上,既然已经知道srandl()和randl()如何使用一个具有内部链接的静态变量,您同样也可以使用您的编译器提供的版本。我们将在下个例子中这样做。