【问题标题】:Returning pseudo random number- C programming language返回伪随机数 - C 编程语言
【发布时间】:2013-11-27 05:53:25
【问题描述】:

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

那么你能向我解释一下整个代码吗? 这是 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;
}

【问题讨论】:

标签: c random


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2011-11-29
    相关资源
    最近更新 更多