我正在寻找一种在Lua中获取介于最小值和最大值之间的随机数的替代方法,而不使用math.random()
。 有没有办法? 它不必是一个简单的方法。
正如评论所提示的,在类Unix系统中,您可以从/dev/random
或/dev/urandom
读取字节,并从中创建随机数。
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
randbytes
,让未来的读者可以简单地玩弄/dev/random
和/dev/urandom
接口。以下是一个快速概述。luarocks
安装或手动获取。$ luarocks install randbytes
要求导入模块或文件。
$ lua
> randbytes = require 'randbytes'
然后获取一些字节。
> print (randbytes (8))
目前,我已经整理好并包含了上述非常简单的生成基本随机数的算法。
> print (randbytes:urandom (16))
math.random
不适合?你尝试过在网上搜索“lua随机数”吗? - Etan Reisner/dev/random
或/dev/urandom
读取字节。 - lhf