问题标签 [lcg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
excel - 在线性同余生成器中选择 a、c、m
我希望在 Excel 中实现一个线性同余生成器。
众所周知,我们必须选择 LCG 的参数为 a、c、m 和 Z0。
维基百科说
一般 LCG 的周期最多为 m,而对于因子 a 的某些选择则要小得多。当且仅当:
还,
我需要选择那些值,我希望 Z0 的初始值为 10113383,其余的都是随机的。不,哪些值具有指定的时间段并保证在该时间段内没有冲突?
我尝试输入一些值,a=13, c=911, m=11584577,它看起来没有冲突。但我不确定我是否违反了规则。
math - 给定一个伪随机数序列,找到等效的 lcg 生成的一个
给定一个伪随机数序列 S,是否存在一个等效的 lcg(线性同余生成器)生成的序列 S',它尊重 S 的相对顺序,如果有,是否可以计算参数 a、c、m 和种子?
例如,以下序列 S:
1、2、4、3
具有作为可能等效的 lcg 生成序列 (a = 16807, c = 78125, m = 2 ^ 31 - 1) 以下 S':
207560540、956631177、2037688522、1509348670
matlab - matlab中的LCG代码
我写了这段代码:
但我不知道如何将 lcg 编写为生成随机数的函数。
LCG 是一种线性同余生成器,它是最古老和最著名的伪随机数生成器算法之一。生成器由递归关系定义:
,我想为这种关系写一个函数。
php - 给定种子值预测 PHP rand() 函数的结果
最近我一直在研究 LCG 和伪随机数生成器的整个想法。无论如何,我认为 PHP 应该是一个很好的起点。
我的问题是,给定一个种子数字(通过 完成srand()
),如何预测rand()
序列中的下一个数字?
据我了解,该函数应该类似于(SEED * A + C) mod M
如何找到 A、C 和 M 的值?如果我找到这些值,我可以预测序列中的下一个数字吗?
编辑:在 7.0 版之前,rand() 成为 mt_rand() 的别名
c++ - 线性同余生成器分析错了?
因此,为了更好地理解 MSVC++ 的实现rand
,我重新实现了它并试图更好地理解它(我猜一般是 LCG)。
我的实现(与 MSVC++ 几乎完全匹配)如下:
为了从 2 个种子中找出新生成的种子的差异,我认为这只是(214013*h) % 2^32
h 是 2 个初始种子之间的差异。使用相同的逻辑,我计算了给定初始种子 asx
和下一个种子 as的 2 个随机生成的数字之间的差异x+h
,我在种子中取了这个不同,将其除以 2^16(或将其右移 16 位),然后摆脱最重要的位。
除了在某些情况下,例如当 x = 100 和 h = 5000 时,这产生的值似乎是正确的。
这是整个代码:
但是,对于这些值,2 个随机生成的值之间的估计差异比实际差异小 1。我在做一些明显错误的事情吗?
java - 为什么我的数学在我的 LCG 中没有加起来?
我正在尝试为示例问题集实施 LCG,但它对我不起作用,我似乎无法弄清楚为什么?
方程很简单:Xn+1 =(aXn + c) mod m
从上面的参考:例如X0 = a = c = 7, m = 10时得到的序列是7, 6, 9, 0, 7, 6, 9, 0, ...
在java中实现这个,例如 -
我得到输出: 6 3 0 7 4 1 8 5 2 9
而不是预期的 7,6,9,0,...
我在纸上得到同样的结果。谁能弄清楚出了什么问题?
同样, a=10, c=7, m=11, x0 = 3 应该给出重复模式 4,3,4,3 但我得到 4 3 2 1 0 10 9 8 7 6
java - java.util.random 是如何工作的?
为了理解 java.util.random 的工作原理,我写了一段简单的代码来模拟 java 随机函数,并比较了 java 随机函数和我的函数的结果。然而,结果是不同的。这意味着要么我犯了一些错误,要么我误解了这个概念。
这是结果的屏幕截图: 结果
n1 不等于 v1。请告诉我我犯了什么错误?谢谢你。
random - 制作可前后移动的可定制 LCG
我将如何让 LCG(伪随机数发生器的类型)双向运行?我知道前进是(a*x+c)%m
,但我怎么能扭转它?我正在使用它,因此我可以将种子存储在地图中玩家的位置,并能够通过在 LCG 中前后传播(如某种随机数轴)来生成围绕它的东西。
c++ - 为什么使用 rand() 被认为是不好的?
rand()
尽管使用种子 via ,但通常不赞成使用 of srand()
。为什么会这样?有什么更好的选择?
python - 如何使用线性同余生成器
我必须用Xn+1 = (aXn + b) mod m
Python 中的这个公式开发一个线性同余生成器。我想我了解如何生成数字序列但我不知道如何使用它,例如模拟骰子(我需要一个介于 1 和 6 之间的数字)