簡體   English   中英

蒙特卡洛模擬Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM