伪随机数发生器用于噪声。
2009-8-12 1:8:17
收藏:0
阅读:385
评论:3
我正在尝试使用 Lua 实现 http://freespace.virgin.net/hugo.elias/models/m_perlin.htm 中描述的 Perlin 噪声算法。然而,Lua 不支持位运算符,而这些运算符对于该页面上的伪随机数函数是必需的。我尝试过使用 randomseed(),但是我能想到的所有操作都只会产生非常奇怪的图案。我需要一个伪随机数生成器,当给定参数 x、y 和随机种子时,它将生成介于-1和1之间的数字。伪代码可以。谢谢!
原文链接 https://stackoverflow.com/questions/1263731
点赞
stackoverflow用户44740
我不知道有没有纯 Lua 解决伪随机数问题的方法,但你可以尝试使用一些纯 Lua 位操作库来编写你提到的算法。
我在 Wiki 上找到了这些:
- LuaBit 是一个完全由 Lua 编写的位操作库。支持的位操作有:not、and、or、xor、右移和左移。还包括一些实用工具:十六进制转十进制、utf8 转 usc2 和 nokia .nfb 转 txt。
- BitUtils 是完全由 Lua 实现的位操作库。
- Module Compress Deflate 包括 _bit.numberlua_,它使用纯 Lua 作为数字实现位操作。
2009-08-13 20:58:00
stackoverflow用户33252
在 Lua 中制作线性同余伪随机数生成器非常容易。一个简单的例子是帕克-米勒。
function pmrng (x) return math.fmod(x * 16807, 2147483647) end
这将在种子x
之后给出下一个随机整数[1..2147483646]。使用这个整数通过除以模数(在本例中为2147483647)来生成浮点数。
prng_seed = 13579
function upmrng () prng_seed = pmrng(prng_seed); return prng_seed / 2147483647 end
要将其缩放到-1..+1,使用以下代码:
upmrng() * 2 - 1
2009-08-14 13:09:18
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
有一些为此而制作的 Lua 库,我发现其中一个是: lrandom
它使用了梅森旋转算法,可能更适合您的需求。