首先,我使用它:
math.randomseed(os.time())
此功能可以检查:
function makeString(l)
if l < 1 then return nil end
local s = ""
for i = 0, l do
n = math.random(0, 61)--61
n0 = 0
if n < 10 then n0 = n + 48
elseif n < 36 then n0 = n - 10 + 65
else n0 = n - 36 + 97 end
s = s .. string.char(n0)
end
return s
end
如果我使用此功能:
app:match("/tttt", function()
local ss = ""
for i=1,10 do ss = ss .. makeString(30) .. "\n" end
return ss
end)
我收到了不同的价值观。
如果我使用它:
app:match("/ttt", function()
return makeString(30)
end)
和JavaScript jQuery, :
$("#button5").click(function(){
var ss = ""
for(var i = 0; i < 10; i++)
{
$("#div1").load("/ttt", function() {
ss = ss + $(this).text()
alert(ss);
});
}
$("#div1").text(ss);
});
我每隔一秒收到相同的随机字符串。 怎么解决?我尝试使用不同的随机数据创建数据库,但我收到相同的字符串!这只是我写的例子,但填写数据库会得到相同的结果!@#%%
有任何想法要解决它吗?
答案 0 :(得分:0)
我发现这是&#34;功能&#34;使用秒来生成随机的lua。使用此链接阅读更多内容:http://lua-users.org/wiki/MathLibraryTutorial
但是可以提供帮助的解决方案是用户/ dev / urandom
描述的链接: http://lua-users.org/lists/lua-l/2008-05/msg00498.html
在我的案例中:
local frandom = io.open("/dev/urandom", "rb")
local makeString
makeString = function(l)
local d = frandom:read(4)
math.randomseed(d:byte(1) + (d:byte(2) * 256) + (d:byte(3) * 65536) + (d:byte(4) * 4294967296))
if l < 1 then return nil end
local s = ""
for i = 0, l do
local n = math.random(0, 61)
n0 = 0
if n < 10 then n0 = n + 48
elseif n < 36 then n0 = n - 10 + 65
else n0 = n - 36 + 97 end
s = s .. string.char(n0)
end
return s
end