如何编写文件以通过 Lua 语言保存随机数

Posted

技术标签:

【中文标题】如何编写文件以通过 Lua 语言保存随机数【英文标题】:How to write file for save a random number by Lua languages 【发布时间】:2021-11-04 06:09:30 【问题描述】:

这是我的功能

function randomNum2(num)
    f = io.open("result.csv", "a+")
    num = math.randomseed(os.clock()*100000000000)
    f:write(string.format("%s\n", num))
    f:close()
    return "TETB"..(math.random(1000000000))
end

result.csv 文件的输出喜欢。

nil
nil
nil
nil
nil
nil
nil
nil
nil

我想知道如何像这样将随机数保存到result.csv 文件中。

TETB539286665
TETB633918991  
TETB892163703  
TETB963005226  
TETB359644877  
TETB131482377  

关于问题是什么以及如何解决它的任何想法?谢谢。

【问题讨论】:

顺便说一句,在程序开始时调用math.randomseed 一次。见***.com/questions/35455489/… 【参考方案1】:

math.randomseed 函数不返回任何内容,它只是将math 库设置为使用某个数字作为“随机”数字的基础,您应该在运行math.randomseed 后使用math.random 函数配置库,math.random 返回一个数字,你可以指定它们之间的范围,如果你不这样做,它可能会返回一个浮点数。

另外,num 参数没有被使用,可以删除或重命名为max,并用作math.random 调用中的参数以用作最大结果数。

【讨论】:

【参考方案2】:

做更多local变量。 并且不要连接 (..) stringnumber。 即时将math.random() 转换为tostring()。 我将您的版本更正为...

randomNum2=function()
    local f = io.open("result.csv", "a+")
    local rand = "TETB"..tostring(math.random(100000000000))
    f:write(string.format("%s\n", rand))
    f:close()
    return rand
end

...和math.randomseed() 不是必需的。

然后你会得到一个你想要的结果.csv。 在交互式独立 Lua 解释器中测试...

> for i=1,10 do randomNum2() end
> os.execute('cat result.csv')
TETB73252732829
TETB48306115776
TETB83524202926
TETB53376530639
TETB39893346222
TETB60394413785
TETB97611122173
TETB35725172461
TETB48950449408
TETB15779990338
true    exit    0
-- Next example puts out the return of the function.
-- That can be used without reading the file.
-- To check what was written/append to result.csv on the fly.
> print(randomNum2())
TETB73113866427

【讨论】:

以上是关于如何编写文件以通过 Lua 语言保存随机数的主要内容,如果未能解决你的问题,请参考以下文章

初识lua

有啥工具能快速取消.lua文件里面的注释的?求一个,谢谢

linux下 如何用NDK生成C语言动态库

Lua脚本语言简单学习

用C语言编写一个随机点名程序

再说C模块的编写