rand 或 srand 子例程
用途
生成伪随机的数字。
库
标准 C 库 (libc.a)
语法
描述
rand 子例程使用乘法同余算法生成伪随机数。 随机数发生器的周期为 2**32,返回的连续伪随机数范围为 0 至 (2**15) -1。
srand 子例程将随机数生成器重置为新的起始点。 它使用 Seed 参数作为由后续调用 rand 子例程返回的伪随机数的新序列的种子。 如果然后调用具有相同种子值的 srand 子例程,那么 rand 子例程将重复伪随机数的序列。 当您在对 srand 子例程进行任何调用之前调用 rand 子例程时,它将生成与您首次使用种子值 1 调用 srand 子例程时相同的数字序列。
注: rand 子例程是一个简单的随机数生成器。 它的光谱特性,是随机性的数学测量,是有限的。 请参阅 drand48 子例程或 random 子例程,以获取更详细的具有更大频谱属性的随机数生成器。
参数
| 项 | 描述 |
|---|---|
| seed(种子值) | 指定初始种子值。 |
返回值
成功完成后, rand 子例程将按顺序返回下一个随机数。 srand 子例程不返回任何值。
如上所述,有更好的随机数生成器; 但是, rand 和 srand 子例程是为 ANSI C 库定义的接口。
示例
以下函数定义 rand 和 srand 子例程的语义,并包含在此处以方便从不同实现移植应用程序:
static unsigned int next = 1;
int rand( )
{
next = next
*
1103515245 + 12345;
return ((next >>16) & 32767);
} void srand (Seed)
unsigned
int Seed;
{
next = Seed;
}