gpt4 book ai didi

javascript - JavaScript 中的自定义线性同余生成器

转载 作者:行者123 更新时间:2023-11-29 10:17:58 24 4
gpt4 key购买 nike

我正在尝试创建自定义 linear congruential generator (LCQ) 在 JavaScript 中(在 glibc 中使用)。

其属性如其所述on Wikipedia是:m=2^31a=1103515245c=12345

现在我得到下一个种子值

x = (1103515245 * x + 12345) % 0x80000000 ; // (The same as &0x7fffffff)

虽然生成器似乎可以工作,但是当在 Canvas 上测试数字时:

cx = (x & 0x3fffffff) % canvasWidth; // Coordinate x (the same for cy)

他们似乎有严重的偏见:http://jsfiddle.net/7VmR9/3/show/

为什么会这样?通过选择不同的模数,视觉测试的结果看起来更好。

测试 JSFiddle 在这里:http://jsfiddle.net/7VmR9/3/

更新

最后,我将转换固定为 Canvas 坐标,如下所示:

var cx = ((x & 0x3fffffff)/0x3fffffff*canvasWidth)|0

现在像素坐标不像使用模运算时那么畸形了。

更新 fiddle :http://jsfiddle.net/7VmR9/14/

最佳答案

对于生成器,公式是(你忘记了第一部分中的模数):

current = (multiplier * current * modul + addend) % modulus) / modulus

我意识到你试图优化它,所以我用这个更新了 fiddle ,这样你就可以用它作为优化的基础:

http://jsfiddle.net/AbdiasSoftware/7VmR9/12/

关于javascript - JavaScript 中的自定义线性同余生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17625232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com