簡體   English   中英

創建一個rand結構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM