兰德函数在c

时间:2011-12-28 16:50:11

标签: c random

  

可能重复:
  What common algorithms are used for C's rand()?

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

它是实现定义的,每个库作者可以随意实现它。但是,它们通常基于linear congruential generators,这在某种程度上是有限的。 POSIX标准给出example implementation

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是输入的大小等)的变化。