Python 蒙特卡罗标准差
您好,我试图用蒙特卡罗方法解决python中的一个问题。问题如下: 一家公司提供笔记本电脑服务。对其记录的审查表明,服务呼叫所花费的时间是正态分布的,平均为60分钟,标准偏差为20分钟。 A.有多大比例的服务电话不到一小时? B超过50分钟的服务电话占多大比例? C超过80分钟的服务电话占多大比例? D如果一个服务呼叫花费了一个多小时,超过70分钟的概率是多少? D在四个电话的随机样本中,平均通话时间少于一个50分钟的概率是多少 我的解决方案是:Python 蒙特卡罗标准差,python,montecarlo,standard-deviation,Python,Montecarlo,Standard Deviation,您好,我试图用蒙特卡罗方法解决python中的一个问题。问题如下: 一家公司提供笔记本电脑服务。对其记录的审查表明,服务呼叫所花费的时间是正态分布的,平均为60分钟,标准偏差为20分钟。 A.有多大比例的服务电话不到一小时? B超过50分钟的服务电话占多大比例? C超过80分钟的服务电话占多大比例? D如果一个服务呼叫花费了一个多小时,超过70分钟的概率是多少? D在四个电话的随机样本中,平均通话时间少于一个50分钟的概率是多少 我的解决方案是: import math import rando
import math
import random
calls = 4
sa = 0
sb = 0
sc = 0
sd = 0
sd2 = 0
se = 0
sumMin = 0
for i in range (1,calls):
r = 60 + 20.* random.randint(1, calls)
#print(r)
if r<60:
sa = sa + 1
break
if r > 50:
sb = sb + 1
break
if r > 80:
sc = sc + 1
break
if r > 60:
sd2 = sd2 + 1
break
if r > 60:
sd = sd + 1
break
break
sumMin = sumMin + r
meanCallsl = sumMin / calls
if meanCallsl < 50:
se = se + 1
虽然我不确定结果如何,你能给我一些建议吗
谢谢你首先,如果你想得到关于堆栈溢出的建议,你应该解释一下是什么让你怀疑你的代码。事实上,你只得到0和1应该在你的主要职位。这是因为您不应该在代码中写入中断 我假设您以前在MATLAB中编程过,您需要编写端到端的for循环和if测试。在python中,这是不必要的,因为代码的缩进定义了for循环和if测试的代码块 此外,您从未在代码中测试70分钟。我想你想这样回答问题d 此外,为什么要使用代码
random.randint(1,调用)
?报告说
random.randint(a,b)
返回一个随机整数N,这样a首先,如果您需要关于堆栈溢出的建议,您应该真正解释是什么让您怀疑您的代码。事实上,你只得到0和1应该在你的主要职位。这是因为您不应该在代码中写入中断 我假设您以前在MATLAB中编程过,您需要编写端到端的for循环和if测试。在python中,这是不必要的,因为代码的缩进定义了for循环和if测试的代码块 此外,您从未在代码中测试70分钟。我想你想这样回答问题d 此外,为什么要使用代码
random.randint(1,调用)
?报告说
random.randint(a,b)
返回一个随机整数N,这样a“我不确定结果”是什么意思?您是否收到奇怪的结果?首先,
random.randint
不会给出随机分布的数字,而是均匀分布的数字,因此您的MC计算得出的分布是错误的。还有,你使用蒙特卡罗方法有什么特别的原因吗?这可以很容易地用高斯分布的CDF来解决,它是用Scipy实现的。我必须用蒙特卡罗来实现,正如我在大学的教授所说。我得到的结果是奇数,只有0和1。。我想是因为你说的,我用错了函数。我对python不太熟悉。你说的“我不确定结果”是什么意思?您是否收到奇怪的结果?首先,random.randint
不会给出随机分布的数字,而是均匀分布的数字,因此您的MC计算得出的分布是错误的。还有,你使用蒙特卡罗方法有什么特别的原因吗?这可以很容易地用高斯分布的CDF来解决,它是用Scipy实现的。我必须用蒙特卡罗来实现,正如我在大学的教授所说。我得到的结果是奇数,只有0和1。。我想是因为你说的,我用错了函数。我对python不太熟悉。
pa = 100 * sa/ calls
print (pa)
pb = 100 * sb / calls
print(sb)
pc = 100 * sd / calls
print(pc)
pd = 100*sd/sd2
print (pd)
pe = 100 * se/calls
print(pe)