Python 蒙特卡罗模拟
我用蒙特卡罗模拟来模拟保存系统。 我的模拟中有一些设备具有一定的失败率。假设失败率为1/100000,意味着每年100000台设备中有1台出现故障。如果设备出现故障,我将支付更换费用。但我不知道如何在模拟中随机捕捉设备故障。据我所知,我需要使用概率分布来模拟这种行为。但我不知道怎么做 随机包中的函数似乎提供了我没有的特定范围内的随机数。我也不知道这是什么样的分布 我希望这个问题对人们有意义。任何帮助都将不胜感激 最新情况: 是我干的Python 蒙特卡罗模拟,python,montecarlo,Python,Montecarlo,我用蒙特卡罗模拟来模拟保存系统。 我的模拟中有一些设备具有一定的失败率。假设失败率为1/100000,意味着每年100000台设备中有1台出现故障。如果设备出现故障,我将支付更换费用。但我不知道如何在模拟中随机捕捉设备故障。据我所知,我需要使用概率分布来模拟这种行为。但我不知道怎么做 随机包中的函数似乎提供了我没有的特定范围内的随机数。我也不知道这是什么样的分布 我希望这个问题对人们有意义。任何帮助都将不胜感激 最新情况: 是我干的 #/usr/bin/python import
#/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()
谢谢timgeb的帮助!但是,我想知道这种行为是否与考虑1/100000的故障率相同?每层(或任何时间单位)的故障设备数量遵循泊松分布。如果您在
m
年内拥有n
个机组,且每年的故障率为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没有泊松分布,即使它可以用一些数学计算出来,比如说,高斯随机数。不,它真的没有意义。发布一些代码,试着更具体地说明你在寻找什么。我希望这个问题是有意义的,真正的问题似乎被遗漏了!如果random.random()<1.0/100000:device.fail(),则没有问号
?我无法进一步提问。是因为这个问题吗?
import numpy as np
n = 100000
m = 5
p = 1.0 / 100000
failed = np.random.poisson(n * m * p)