[英]Monte Carlo Simulations Python
我正在使用蒙特卡洛模擬來模擬保存系統。 我的模擬設備中有某些故障率。 假設故障率為1/100000,這意味着每年100000台設備中有1台發生故障。 如果設備出現故障,我將支付更換費用。 但是我不知道如何在仿真中隨機捕獲設備故障。 據我了解,我需要使用概率分布來模擬這種行為。 但是我不知道該怎么做。
隨機包中的函數似乎提供了我沒有的特定范圍內的隨機數。 我也不知道這是什么樣的分布。
我希望這個問題對人們有意義。 任何幫助將不勝感激。
更新:
我做了這個
#/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相同?
每個yer(或任何時間單位)發生故障的設備數遵循Poisson分布。 如果在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
將隨機確定發生故障的單元數。 多次運行最后一行以查看會發生什么。
AFAIK,純python沒有泊松分布,即使可以用例如高斯隨機數的一些數學計算得出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.