簡體   English   中英

Python截斷指數分布

[英]Python truncated exponential distribution

我正在嘗試生成具有 F(x) = 1-(math.exp(-(x+100*math.log(1-((1-0.05)** (1/100))))/1.5)) 指數分布且具有以下分布函數的3個隨機數: F(x) = 1-(math.exp(-(x+100*math.log(1-((1-0.05)** (1/100))))/1.5)) ,當x>-100*math.log(1-((1-0.05)**(1/100)))

問題是當沒有上限時,我不知道如何設置x值的概念。 有什么想法如何使這3個數字在數學上正確嗎?

我不確定您的分布函數,對我來說有點混亂(請注意:(1-0.05)**(1/100)=(0.95 ** 0.01)),但您可以將系統的最大界限用作上限以使用random.uniform()生成隨機變量x,則可以計算F(x)以獲得屬於您的分布的隨機值。 可以像下面這樣完成:

import sys
import math 
import random 

def F(x):
    return 1-(math.exp(-(x + 100*math.log(1-(0.95**0.01)))/1.5))

def get_random_value_from_distribution():
    x = random.uniform(-100 * math.log(1- (0.95**0.01)), sys.maxsize)
    y = F(x)
    return y

print("x1:", get_random_value_from_distribution())
print("x2:", get_random_value_from_distribution())
print("x3:", get_random_value_from_distribution())

注意:您的分布函數在一定間隔內固定為1,因此需要注意以下幾點: 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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