Preface
其实是打算写个随机性语言选择器的。我和小伙伴打算每天换一门语言来对话,于是就采用随机函数的方法去帮助我们去选择!这次比较匆忙,脚本就暂且这样,以后优化,文章美化就暂时这样,以后再调整。
这个随机数生成问题目前主要是分成4个部分。最常见的,一次改进的,二次改进的和三次改进。以下主要改进的是randomseed的取值~
程序1:初始的最常见的随机数生成
-- 常见的随机数生成
math.randomseed(os.time())
for i=1, 7 do
print(math.random())
end
一次改进
改进的核心:
可以查看这篇文章,里面有说明random()的 seed 很小或者seed 变化很小,产生的随机序列仍然很相似。Lua 随机数生成问题,点我
核心的语句如下:
-- 该语句是作用是:将os.time()的结果反转,然后取高6位,这样seed的变化就大了,
math.randomseed(tonumber(tostring(os.time()):reverse():sub(1, 6)))
以下是用来帮助选择语言的实例代码:
-- 全局变量,在这里控制概率的大小
English = 13
Cantonese = 7
Japanese = 8
Korean = 67
-- 随机函数
function rnd()
local ret = 0
-- 基于系统时间的随机数种子,用这种方式防止极端时间内造成随机数相同的情况
-- 事实上,这个还是不行,最多只是减轻症状,后文再细说)
math.randomseed(tonumber(tost