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

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

原文链接 https://stackoverflow.com/questions/69086620

点赞
stackoverflow用户16851038
stackoverflow用户16851038

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

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

2021-09-07 11:48:09
stackoverflow用户11740758
stackoverflow用户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