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