登录
首页 >  Golang >  Go问答

Golang 百万分之一的概率

来源:stackoverflow

时间:2024-04-16 09:09:33 243浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《Golang 百万分之一的概率》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我正在学习一些 Go,并且正在做一些面试练习。我有一个练习,要求人们以百万分之一的概率随机执行某些操作。

假设我想要百万分之一的 return true

如果我的数学仍然正确(谷歌也是如此),我会用表达式 math.Pow(1-(1/1000000),1000000) 来计算,但是这会不断地返回我 1 ,这似乎不是正确。

鉴于此描述,我如何确保我只返回 true 百万分之一?这听起来微不足道,但我真的很挣扎。


解决方案


go 标准库有一个 rand 包,它有 intn() 函数,它会给你一个 [0 , n) 范围内的伪随机数。因此,要以 1/1000000 的概率触发事件,您可以执行类似的操作

package main

import (
    "fmt"
    "math/rand"
)

func main() {
    n := rand.intn(1000000)
    if n == 154397 {
        fmt.println("i am a lucky bastard!")
    } else {
        fmt.println("i am not")
    }
}

不用说,154397 可以替换为范围内的任何其他整数。 Link to playground

1/1000000 为零。整数除法向零截断。

使用浮点,1.0而不是1:

package main

import (
    "fmt"
    "math"
)

func main() {
    p := math.pow(1-(1/1000000), 1000000)
    fmt.println(p)
    p = math.pow(1-(1.0/1000000), 1000000)
    fmt.println(p)
}

演示:https://play.golang.org/p/ZhUAe6imaNv

输出:

1
0.36787925722078507

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>