我目前正在尝试使用 F# 进行编程。因此,我编写了一个简单的 F# 脚本以非常愚蠢的方式计算 PI。我已经用许多编程语言编写了这个算法,但这次它的执行速度很慢,我不知道我做错了什么。与我的 Java 版本相比,这里的速度大约慢 10-20 倍(在我的机器上通过按 Alt+Enter 在 VS Code 中运行大约 10-15 sek),这是很多(在我看来)。
算法的想法是在一个 1 x 1 的正方形上扔飞镖,里面有一个圆圈。圆接触正方形的边缘。如果飞镖击中圆圈,它就会被计算在内。投出所有飞镖后,您只需将飞镖命中数除以飞镖总数,然后乘以 4 即可得到 PI。
我尝试了很多方法来解决我的错误,但找不到。
PS:我知道这种计算 Pi 的方法很糟糕。但这不是我在这里试图提出的重点。
open System
let random = Random(DateTime.Now.Millisecond)
let throwDart i = (random.NextDouble(), random.NextDouble())
let distance dart point = let (x1, y1), (x2, y2) = dart, point
(x2 - x1, y2 - y1)
let length distance = let (x, y) = distance …Run Code Online (Sandbox Code Playgroud)