gpt4 book ai didi

go - 创建一个 rand 结构

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:03 24 4
gpt4 key购买 nike

我在这个代码库中发现了以下内容,有人用这样的 TODO 评论了这个方法

    // TODO avoid using rand.Float64 method. it uses a singleton lock and may cause
// performance issues. Instead, instantiate a rand struct and use that to call
// Float64()

func standardStrategy(l *ledger) bool {
return rand.Float64() <= probabilitySend(l.Accounting.Value())
}

func probabilitySend(ratio float64) float64 {
x := 1 + math.Exp(6-3*ratio)
y := 1 / x
return 1 - y
}

这是什么意思?

最佳答案

我认为它的意思是:rand 包有一个叫做 Rand 结构的东西,它有随机生成函数,可能不会锁定全局锁,所以评论的作者可能意味着使用这个结构。即:

r := rand.New(rand.NewSource(1234))

fmt.Println(r.Float64())

此代码中使用的函数对包而言是全局的,并使用全局初始化的 Rand 结构,内部称为 globalRand,它具有内部互斥锁。所以避免使用它可以节省这种锁定。

关于go - 创建一个 rand 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26187153/

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