兰德函数在c

可能重复:
C的rand()使用了哪些常用算法?

如何在c库中定义rand函数。 rand函数的时间复杂度是多少? 如果有人可以提供rand函数的源代码(我不需要它的实现,但源代码),那就太好了。 感谢名单

这是O (1)复杂性,没有输入,它返回一个int

来自http://www.jbox.dk/sanos/source/lib/stdlib.c.html :

 int rand() { return (((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff); } 

它是实现定义的,每个库作者可以随意实现它。 然而,它们通常基于线性同余发生器 ,这在某种程度上是有限的。 POSIX标准给出了一个示例实现 :

 static unsigned long next = 1; /* RAND_MAX assumed to be 32767 */ int myrand(void) { next = next * 1103515245 + 12345; return((unsigned)(next/65536) % 32768); } void mysrand(unsigned seed) { next = seed; } 

我不确定你的“时间复杂度”是什么意思; “时间复杂度”通常指的是运行时间相对于n变化(其中n是输入的大小或其他东西)。