gpt4 book ai didi

python - 蒙特卡洛模拟 Python

转载 作者:行者123 更新时间:2023-12-01 05:09:00 25 4
gpt4 key购买 nike

我正在使用蒙特卡罗模拟来模拟保存系统。我的模拟中的设备具有一定的故障率。假设故障率为 1/100000,这意味着每年有十分之一的设备发生故障。如果设备出现故障,我将支付更换费用。但我不知道如何在模拟中随机捕获设备故障。据我了解,我需要使用概率分布来模拟这种行为。但我不知道该怎么做。

随机包中的函数似乎提供了我没有的特定范围内的随机数。我也不知道这是什么类型的分布。

我希望这个问题对人们来说有意义。任何帮助将不胜感激。

更新:

我做到了

    #/usr/bin/python
import random

def main():
count =0
#fail rate is 1% of 100000, I need to do this probabilistically
for _ in range(1,100000):
x=random.random()
if x <= 1.0/100000:
count += 1

print "x = "+str(x)+" fail device"
print "device failed "+str(count)+" times"

if __name__ == '__main__':
main()

我得到的输出如下

        x = 0.000743343826396 fail device
device failed 1 times
[Finished in 0.0s]

感谢 Timgeb 的帮助!但是,我想知道这种行为是否与考虑 1/100000 的失败率相同?

最佳答案

每年(或任何时间单位)发生故障的设备数量遵循泊松分布。如果您有 n 个单元,运行 m 年,每年的故障率为 p,那么您可以获得一个随机数使用 numpy.random.poisson 失败的单元:

import numpy as np

n = 100000
m = 5
p = 1.0 / 100000

failed = np.random.poisson(n * m * p)

函数np.random.poisson将随机确定失败单元的数量。多次运行最后一行看看会发生什么。

据我所知,纯Python不具有泊松分布,尽管它可以通过一些数学计算,例如高斯随机数。

关于python - 蒙特卡洛模拟 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24539397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com