c - 滞后的斐波那契生成器是如何随机的?

标签 c random numbers

我不明白。如果它有一个固定的长度,一遍又一遍地选择滞后和模数会得到相同的数字,不是吗?

最佳答案

准确地说,滞后斐波那契是一个随机数生成器。它不是真正的随机,但比更常用的 linear congruential generator很多 (C++、Java 等的标准生成器)。我不确定您为什么认为它会再次给出相同的数字,但确实像所有伪随机数生成器一样,它有一个句点,之后数字序列将再次重复.

乘法 LFG 的周期为 (2^k - 1)*2^(M-3)。对于实际参数来说,这其实是相当大的(LCG的周期只有M)。

LFG 的唯一问题是初始化过程非常复杂,而且其背后的数学原理并不完整。最好查阅文献以选择合适的参数和推荐的正确播种程序。

作为示例,具有参数 (j=31, k=52) 和模数 m=2^32 的乘法 LFG 的种子数组为 52 32 -位数。


其他引用资料:

关于c - 滞后的斐波那契生成器是如何随机的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2360890/

相关文章:

c - ListView 控件的默认 WindowProc 是什么?

java - 如何有效地只生成奇数(或偶数)随机数?

php - 如何从加权列表中挑选 4 个独特的项目?

r - 是否可以仅从 R 中的 logLik 对象中提取对数似然值?

c - C语言中如何求一个数的长度?

c++ - 使用 c 中结构的 malloc 对内存块进行索引

c++ - sqlite3数据库文件可以删除,仍然可以访问

algorithm - 计算正整数幂的最快算法是什么?

c - 如何在循环中组合 RECV 和 getMessage(C、WINAPI)

Python:我需要随机生成6个数字,它们的总和等于指定的数字