Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 噪声伪随机数发生器_Random_Lua - Fatal编程技术网

Random 噪声伪随机数发生器

Random 噪声伪随机数发生器,random,lua,Random,Lua,我正在尝试使用Lua中描述的柏林噪声算法。但是,它不能正常工作,因为Lua不支持按位运算符,这是该页上伪随机数函数所必需的。我试着胡乱摆弄randomseed(),但我能想到的一切都是非常奇怪的模式。我需要一个伪随机数生成器,当给定参数x,y和一个随机种子时,它将生成-1和1之间的数。伪代码很好 谢谢 已经有一些lua库用于此,我发现的一个库是: 它使用Mersenne Twister算法,这可能会更好地满足您的需要。有一些lua库专门为此设计,我发现的一个库是: 它使用Mersenne T

我正在尝试使用Lua中描述的柏林噪声算法。但是,它不能正常工作,因为Lua不支持按位运算符,这是该页上伪随机数函数所必需的。我试着胡乱摆弄randomseed(),但我能想到的一切都是非常奇怪的模式。我需要一个伪随机数生成器,当给定参数x,y和一个随机种子时,它将生成-1和1之间的数。伪代码很好


谢谢

已经有一些lua库用于此,我发现的一个库是:


它使用Mersenne Twister算法,这可能会更好地满足您的需要。

有一些lua库专门为此设计,我发现的一个库是:


它使用Mersenne Twister算法,这可能会更好地满足您的需要。

我不知道任何针对伪随机数问题的纯Lua解决方案,但您可以尝试使用一些纯Lua位库编写您提到的算法

我在下列文件中发现:

  • 是完全用Lua编写的位操作库。支持的按位操作有:not、and、or、xor、right shift和left shift。几个实用程序:十六进制到十二进制,utf8到usc2和nokia.nfb到txt
  • 是完全在Lua中实现的位操作
  • 包括bit.numberlua,它以数字形式在纯Lua中实现按位操作

我不知道有任何针对伪随机数问题的纯Lua解决方案,但您可以尝试使用一些纯Lua位库编写您提到的算法

我在下列文件中发现:

  • 是完全用Lua编写的位操作库。支持的按位操作有:not、and、or、xor、right shift和left shift。几个实用程序:十六进制到十二进制,utf8到usc2和nokia.nfb到txt
  • 是完全在Lua中实现的位操作
  • 包括bit.numberlua,它以数字形式在纯Lua中实现按位操作

在Lua中制作线性同余随机数生成器很容易。一个简单的例子是

这将为您提供种子
x
之后的下一个随机整数[1..2147483646]。在本例中,使用该整数除以模数2147483647生成浮点

prng_seed = 13579
function upmrng () prng_seed = pmrng(prng_seed); return prng_seed / 2147483647 end
要将其缩放到-1+我做

upmrng() * 2 - 1

在Lua中很容易生成线性同余随机数发生器。一个简单的例子是

这将为您提供种子
x
之后的下一个随机整数[1..2147483646]。在本例中,使用该整数除以模数2147483647生成浮点

prng_seed = 13579
function upmrng () prng_seed = pmrng(prng_seed); return prng_seed / 2147483647 end
要将其缩放到-1+我做

upmrng() * 2 - 1

我找不到这个链接。另外,这只是一个游戏(附带项目)的脚本,所以我没有安装C库的权限。链接在那里:但是如果你不能使用C库,它对你没有帮助。我找不到这方面的链接。另外,这只是一个游戏(附带项目)的脚本,所以我没有安装C库的权限。链接在那里:但是如果你不能使用C库,它对你没有帮助。我让LuaBit工作。另一个问题是。。。函数噪声1(x,y)n=x+y*57 n=bit.blshift(n,13)^n;n2=(1.0-(位带(圆形((n*(n*n*15731+789221)+1376312589)),2147483647))/1073741824.0)返回n2;n端本身已经相当大了。然后它被向左移位了13位。在这一点上,它是8或9位数字。。。然后它被提升到n次方。结果数太大,以至于变成无穷大,因此函数的最终输出总是1,除了非常低的x和yI值外。另一个问题是。。。函数噪声1(x,y)n=x+y*57 n=bit.blshift(n,13)^n;n2=(1.0-(位带(圆形((n*(n*n*15731+789221)+1376312589)),2147483647))/1073741824.0)返回n2;n端本身已经相当大了。然后它被向左移位了13位。在这一点上,它是8或9位数字。。。然后它被提升到n次方。结果的数字太大,以至于变成无穷大,因此函数的最终输出总是1,除了非常低的x和y值