lua 随机数math.random()与math.randomseed()实操应用心得

本文介绍了Lua中使用math.random()和math.randomseed()生成随机数遇到的问题及解决方案。当直接使用math.random()时,由于C语言的随机序列固定,导致重复的随机数。通过math.randomseed(os.time())利用系统时间设置种子,可以解决重复问题。然而,短时间内运行仍可能出现第一个随机数相同的情况。文章提供了两种解决方法:1. 删除已生成的随机数;2. 创建新表插入旧表的后续随机数。此外,讨论了使用时间微秒级别作为随机种子以提高精确性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚学习了lua中的随机数生成,简单谈一下lua随机数学习心得
一开始学习随机数的时候简单的以为lua语言生成随机数很方便,在编写代码后发现确实能生成随机数,但是多运行几次后发现生成的随机数都是一样的,是因为C生成的随机序列是固定的,导致了每次运行时获取的随机数是一样的,如下代码:(PS:下文中都是给出了生成10个随机数的代码)

for i=1,10 do
    local n = math.random(1,100)--生成1-100中的任意数
    print(n)
end

上述代码在lua中生成的随机数都是一样的,并不能满足我们的需求。这时我们需要配合随机化种子函数math.randomseed()来使用。math.randomseed()是用于设置随机数的种子。生成随机数的程序运行,我们需要赋予随机数的种子的准确性很关键。但是如果每次手动输入随机数种子,一是很麻烦,二是准确性也不高,我们常用赋给随机数的种子是运用系统时间作为一种简便可靠的标准,即os.time。这便组合成我们需要的:math.randomseed(os.time())
这样便可以正常生成我们需要的随机数,如下代码:

math.randomseed(os.time()) --产生随机数机制
for i=1,10 do
    local n = math.random(1,100)
    print(n)--生成10个随机数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值