Lua 语言中如何编写文件来保存随机数

这是我的函数

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

有什么解决方法吗?谢谢。

点赞
用户16851038
用户16851038

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

此外,“num” 参数没有被使用,可以被移除或重命名为 “max”,并用作 math.random 调用中的参数来指定最大结果数字。

2021-09-07 11:48:09
用户11740758
用户11740758

做更多的local变量。

不要用string连接(..)和number

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()是不必要的。

然后你会得到一个你想要的result.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
--下一个示例输出函数的返回值。 
--可以在不读取文件的情况下使用它。 
--通过动态写入/附加到result.csv来检查。 
> print(randomNum2())
TETB73113866427
2021-09-11 22:24:58