Lliujunjie (T)update for 0.59.6
22ae3ba4创建于 2025年3月27日历史提交
// 基于仓颉并发机制,在多线程中随机投点估算圆周率的值
// LJJ 2024.12.10
import std.collection.ArrayList
import std.random.Random
import std.math.*

const M = 200000
const N = 16
func task(): Int64 {
    var n: Int64 = 0
    let random = Random()
    for (_ in 0..M) {
        let x = random.nextFloat64()
        let y = random.nextFloat64()
        if ((x - 0.5) ** 2 + (y - 0.5) ** 2 < 0.25) {
            n++
        }
    }
    return n
}

main() {
    let futures = ArrayList<Future<Int64>>()
    for (_ in 0..N) {
        let future = spawn { task() }
        futures.add(future)
    }
    var n = 0
    for (future in futures) {
        n += future.get()
    }
    let pi = Float64(n) / Float64(M * N) * 4.0
    println("π ≈ ${pi}")
    println("deviation: ${abs(Float64.GetPI() - pi)}")
}