您好我尝试使用蒙特卡罗方法解决python中的问题。问题如下: 一家公司为笔记本电脑服务对其记录的审查表明,服务呼叫所花费的时间通常是平均60分钟,标准差20分钟。 一个。服务电话的比例不到一小时? 湾超过50分钟的服务电话占多大比例? C。超过80分钟的服务电话占多大比例? d。如果服务电话花了一个多小时,那么它需要超过70分钟的概率是多少? d。在四个呼叫的随机样本中,平均呼叫长度小于一个50分钟的概率是多少?
我的解决方案:
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
和a,b,c,d以下条件
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)
虽然我不确定结果,你能告诉我吗?
谢谢
答案 0 :(得分:2)
首先,如果你想要有关堆栈溢出的建议,你应该真正解释是什么让你怀疑你的代码。你只得到0和1的事实应该在你的主要帖子中。这是因为你不应该在代码中写下break。
我假设您之前已在MATLAB中编程,您需要编写端到端的for循环和测试。在python中,这不是必需的,因为代码的缩进定义了for循环的代码块以及测试。
此外,您永远不会在代码中测试70分钟。我假设你想这样做来回答问题d。
此外,为什么你有代码random.randint(1, calls)
? Python documentation表示
random.randint(a,b)
返回随机整数N,使得&lt; = N&lt; = b。 randrange的别名(a,b + 1)。
这意味着您的random.randint(1, calls)
将产生1
和calls
之间的随机整数。 random.gauss
可能是您感兴趣的功能(有关文档,请参阅https://docs.python.org/3/library/random.html#random.gauss。)