Random 在Lua中获取随机数的其他方法
我正在寻找一种替代方法,在Lua中获得一个介于最小值和最大值之间的随机数,而无需使用Random 在Lua中获取随机数的其他方法,random,lua,Random,Lua,我正在寻找一种替代方法,在Lua中获得一个介于最小值和最大值之间的随机数,而无需使用math.random()。有办法吗?它不一定是一个简单的方法。就像注释所暗示的那样,在类似Unix的系统上,您可以从/dev/random或/dev/uradom读取字节,并从中创建一个随机数 urand = assert (io.open ('/dev/urandom', 'rb')) rand = assert (io.open ('/dev/random', 'rb')) function RNG (
math.random()
。有办法吗?它不一定是一个简单的方法。就像注释所暗示的那样,在类似Unix的系统上,您可以从/dev/random
或/dev/uradom
读取字节,并从中创建一个随机数
urand = assert (io.open ('/dev/urandom', 'rb'))
rand = assert (io.open ('/dev/random', 'rb'))
function RNG (b, m, r)
b = b or 4
m = m or 256
r = r or urand
local n, s = 0, r:read (b)
for i = 1, s:len () do
n = m * n + s:byte (i)
end
return n
end
作为对这个答案的扩展,为了好玩,我编写了一个非常小的模块,以便未来的读者可以简单地使用
/dev/random
和/dev/uradom
接口。这里有一个简短的概述
使用安装或手动获取
$ luarocks install randbytes
需要模块或文件
$ lua
> randbytes = require 'randbytes'
然后抓取一些字节
> print (randbytes (8))
现在,我已经清理并包含了上面显示的用于生成基本随机数的非常简单的生成算法
> print (randbytes:urandom (16))
您可以在基本接口的基础上构建以实现自己的算法。有关方法和设置的完整列表,请阅读。为什么
math.random
不合适?你试过在网上搜索lua random吗?也许你应该给出你想要避免random的理由。你想念熵吗?如果你在Linux或Mac OS X上运行,你可以从/dev/random
或/dev/urandom
读取字节。math.random()并不合适,我只是想知道是否还有其他方法可以获得随机数。谢谢,这就是我一直在寻找的答案!