我想实现func()函数,该函数可以完成以下任务:
汽车的平均重量为m
千克,标准偏差为s
千克。您希望所有汽车的哪一部分重量超过k
千克(概率必须为<1
)?
import scipy.stats as sts
def func(m, s, k):
norm_rv = sts.norm(loc=m, scale=s)
return round(norm_rv.cdf(k), 4)
print('Result:', func(25, 3, 27))
结果为0.7475
,但必须为0.2546
我做错了什么?
答案 0 :(得分:1)
norm_rv.cdf(k)
返回随机变量具有小于或等于 k
的值的概率。
您的实施应该是
import scipy.stats as sts
def func(m, s, k):
norm_rv = sts.norm(loc=m, scale=s)
return round(1 - norm_rv.cdf(k), 4) # This is where the change is
print('Result:', func(25, 3, 27))
答案 1 :(得分:0)
首先,阅读文档:cdf
是累积分布函数,是从-infinity到给定点的积分。简而言之,这是重量不超过 k
的汽车所占的比例。您需要从1.0000中减去该值。
这将为您提供0.2525的值。我不确定为什么会期望0.2546。
答案 2 :(得分:0)
norm_rv.sf(k), 4
生存功能(也定义为1-cdf,但sf有时更准确)。 https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html