[英]Creating a rand struct
我在此代碼庫中找到了以下內容,有人用這樣的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
,該結構具有內部互斥量。 因此,避免使用它可以保存此鎖定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.