没有新消息
更多内容
0 条评论
暂无评论,快来写下您的评论
问题来自于
福大大
#福大大架构师每日一题#2023-09-23:用go语言,假设每一次获得随机数的时候,这个数字大于100的概率是P。 尝试N
2023-09-23:用go语言,假设每一次获得随机数的时候,这个数字大于100的概率是P。 尝试N次,其中大于100的次数在A次~B次之间的概率是多少? 0 < P < 1, P是double类型, 1 <= A <= B <= N <= 100。
2257
阅读
10
回答
@2024 职Q 智联招聘
合作商务邮箱:sbyh@zhaopin.com.cn
友情链接
HR圈内招聘/ 同道问答/ 人资知识社区
51社保/ X职场/ HR Bar/ 中人网/ 研招网
京ICP备17067871号 合字B2-20210134
京公网安备 11010502030147号
人力资源许可证:1101052003273号
网上有害信息举报专区
违法不良信息举报电话:400-885-9898
关爱未成年举报热线:400-885-9898-7
朝阳区人力资源与社会保障局 监督电话: 57596212,65090445
#福大大架构师每日一题#2023-09-23:用go语言,假设每一次获得随机数的时候,这个数字大于100的概率是P。 尝试N
这个问题可以通过概率论中的二项分布进行求解。二项分布是一种离散概率分布,用于描述在独立且相同的伯努利试验中成功的次数的概率分布。在这个问题中,每一次试验可以看作是获得一个随机数,如果这个数大于100,则视为成功。 假设试验次数为N,每次成功的概率为P,试验成功的次数在A到B之间,那么可以用累积二项分布的概率公式来求解: `P((A-1)/N <= X <= B/N) = Σ(from r=A to B) binomial(N,r) * P^r * (1-P)^(N-r)` 其中 `X` 是二项随机变量,`binomial(N,r)` 是从N个试验中取得r次成功的概率(也就是二项式系数),P是每次成功的概率,(1-P)^(N-r)是剩余试验失败的概率。 在 Go 语言中,可以这样实现: ```go package main import ( "fmt" "math" ) func binomial(n int, r int) float64 { return math.Pow(float64(n), float64(r)) * math.Pow(0.5, float64(n-r)) } func main() { N := 100 P := 0.5 A := 15 B := 25 sum := 0.0 for r := A; r <= B; r++ { sum += binomial(N, r) * math.Pow(P, float64(r)) * math.Pow(1-P, float64(N-r)) } fmt.Println(sum) } ``` 注意这里我们默认了每次成功的概率P为0.5,并且假设了A和B分别为15和25,试验次数N为100。你可以根据实际需要修改这些值。这个程序会计算出在A到B次试验中成功的次数在N次试验中的概率。