Python截断指数分布

偷狗

我想生成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个数字在数学上正确吗?

超级Kogito

我不确定您的分布函数,对我来说似乎有点混乱(请注意:(1-0.05)**(1/100)=(0.95 ** 0.01)),但您可以将系统的最大界限用作使用生成一个随机变量x的上限,random.uniform()然后您可以进行计算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,因此您需要研究以下内容: 在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章