蒙特卡洛标准偏差python

时间:2018-04-16 08:49:32

标签: python montecarlo standard-deviation

您好我尝试使用蒙特卡罗方法解决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)

虽然我不确定结果,你能告诉我吗?

谢谢

1 个答案:

答案 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)将产生1calls之间的随机整数。 random.gauss可能是您感兴趣的功能(有关文档,请参阅https://docs.python.org/3/library/random.html#random.gauss。)