gpt4 book ai didi

f# - 在 F# 中强制对函数进行多次计算

转载 作者:行者123 更新时间:2023-12-04 16:48:49 24 4
gpt4 key购买 nike

我正在尝试在 F# 中开发一个随机数“生成器”。

我成功创建了以下函数:

let draw () =
let rand = new Random()
rand.Next(0,36)

这很好用,它会生成一个 0 到 36 之间的数字。

但是,我正在尝试创建一个多次运行此函数的函数。

我尝试了以下
let multipleDraws (n:int) =
[for i in 1..n -> draw()]

但是,我只得到一个结果,如 draw在 for comprehension 中只计算一次。

我怎么能强制多次执行 draw功能?

最佳答案

问题在于 Random 类型。它使用计算机的时间来生成种子,然后生成随机数。由于实际上调用的时间是相同的,因此生成了相同的种子,因此返回的数字也是相同的。

这将解决您的问题:

let draw =
let rand = new Random()
fun () ->
rand.Next(0,36)

进而:
let multipleDraws (n:int) =
[for i in 1..n -> draw()]

关于f# - 在 F# 中强制对函数进行多次计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com