返回伪随机数-C编程语言

时间:2013-11-27 05:53:26

标签: c random

我不知道这是怎么回事。我所知道的是它是一个产生随机数的函数。

所以你可以向我解释这整段代码。 这是K& R C编程语言第2版书中的第46页。

unsigned long int next = 1;

/* rand: return pseudo-random integer on 0..32767 */
int rand(void)
{
    next = next * 1103515245 + 12345;   /*What the heck is this line doing?????? */
    return (unsigned int) (next/65536) % 32768; /*This line, too, I have no idea.. */
}

/* srand: set seed for rand() */
void srand(unsigned int seed)
{
     next = seed;
}

1 个答案:

答案 0 :(得分:0)

此随机数生成器包含LCG,它们是Xn + 1(下一个元素)= aXn + c mod m(Xn是当前元素)的算法。然后从种子的第二位开始取15位作为输出。在LCG中,每个数字都是通过将状态数乘以常数,将其加到常数并将其模数为常数来生成的,这将决定输出的大小。