繁体   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