课时 10 · 标准库

课时 10 · 标准库(Lua 进阶):熟练使用常用标准库。含可运行的示例代码、练习与验收要点,示例锁定 Lua 5.1,可在站内在线运行验证。

教程/第二部分 · Lua 进阶更新于 2026-10-073 个小节 教程第 13 / 23 篇 Lua进阶

本课的代码可以就地复制;点代码块右上角的「运行这段」, 会带着这段代码打开 Lua 在线运行器 并直接跑出结果 (课程示例统一按 5.1 跑;运行器里也能切到 5.3)。

本课的代码跑在 996 引擎里,用到的是服务端接口(changeexp、 SetInt 这类),在线运行器里没有这些函数。 每个函数的签名都能在 文档检索 里按名字查到原文。

本课目标

  • 熟练使用常用标准库。

知识讲解

math 库:math.random(随机数)、math.randomseed(随机种子)、math.floor/math.ceil(取整)、math.max/min、math.abs。table 库:insert/remove/sort/concat。os 库:os.time/os.date(时间)、os.clock(时钟)。io 库:io.open 读写文件。引擎开发中常用 math.random 做概率判定,用 os.time 记录时间戳。

示例:随机数与时间

math.randomseed(os.time())
local r = math.random(1, 100)   -- 1-100 随机整数
print(r)

local t = os.time()
print(os.date('%Y-%m-%d %H:%M:%S', t))

local f = io.open('log.txt', 'a')
f:write('掉落:', r, '\n')
f:close()

练习任务

  • 制作抽奖概率模拟器:奖池含 4 档奖品(概率 60%/30%/8%/2%),模拟 1000 次抽奖并统计各档次数与占比。

参考:抽奖模拟

math.randomseed(os.time())
local prize = {60, 30, 8, 2}
local stat = {0, 0, 0, 0}
for i = 1, 1000 do
    local r = math.random(1, 100)
    local acc = 0
    for j = 1, 4 do
        acc = acc + prize[j]
        if r <= acc then stat[j] = stat[j] + 1 break end
    end
end
for j = 1, 4 do
    print(j, stat[j], string.format('%.1f%%', stat[j] / 10))
end
本篇依据
  • 《996 新三端 Lua 开发教学技术手册》课时 10

参数与取值以你本机版本的官方帮助文档为准,不同版本之间有过调整。