UUID 是一套用于生成全局唯一标识符的标准,也被称为 GUID (Globally Unique Identifier),UUID的标准形式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的36个字符. 随机种子相同,随机算法相同的情况下,会生成相同的随机序列,所以可以考虑通过时间戳,mac地址,cpuid等作为随机种子。 Lua中相同版本相同随机种子的情况下,随机数相同。Lua5.1 每次虚拟机初始化的随机种子是相同的,Lua5.3后每次创建的虚拟机初始化的随机种子不同。
local uuidMap={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}
local separator = {8,4,4,4,12}
-- math.randomseed(tostring(os.clock()):sub(3,8):reverse() .. os.time())
function genUUID()
local id = ""
for i,sepNum in ipairs(separator) do
for j=1,sepNum do
id = id .. (uuidMap[math.random(1,16)])
end
if i < #separator then id = id .."-" end
end
return id
end
for i=1,10 do
print("uuid = ",genUUID())
end