2014-07-02 167 views
0

我正在使用蒙特卡羅模擬模擬保存系統。 我的模擬設備中有一定的失敗率。假設失敗率爲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的失敗率相同?

+0

不,它沒有任何意義。張貼一些代碼,並嘗試更具體的你在找什麼。 –

+0

*我希望這個問題是有道理的*真正的問題似乎失蹤了!沒有問號 –

+2

'if random.random()<1.0/100000:device.fail()'? – timgeb

回答

2

每個失敗設備的數量(或任何時間單位)遵循泊松分佈。如果你有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並不具有泊松分佈。

+0

我無法提出進一步的問題。是因爲這個問題嗎? – Pretty