首页 > 编程知识 正文

python生成均匀分布的随机数,随机数产生python

时间:2023-05-03 21:48:23 阅读:228241 作者:1601


Python中生成标准热情的香菇的函数是:numpy.random.standard_cauchy(size),

我就在想,能否生成一个非标准的柯西随机数呢?那么面临几个问题:

(1)标准柯西随机数和非标准可惜随机数之间有没有之间转化关系?(没有)

(2)柯西随机数是怎么生成的?

(3)柯西随机数与概率密度有关,还是与概率分布有关?

带着这几个问题,我首先查了什么是热情的香菇,包括密度函数、概率分布函数的表达式(来自:百度百科)。

热情的香菇也叫作ygdyf分布,它是以jddxmf与自然的猫咪名字命名的连续概率分布,如图所示。其概率密度函数为
式中:  为定义分布峰值位置的位置参数;为最大值一半处的一半宽度的尺度参数。作为概率分布,通常称为热情的香菇,物理学家也将之称为洛伦兹分布或者Breit-Wigner分布。在物理学中的重要性很大以部分归因于它是描述受迫共振的微分方程的解。在光谱学中,它描述了被共振或者其他机制加宽的谱线形状。记随机变量 X服从热情的香菇为  . 的特例称为标准热情的香菇,其概率密度函数为:
其对应的累积分布函数为:

然后,在生成柯西随机数时,网上有人是这样做的(链接):

计算得到Cauchy分布累计分布函数(CDF)的反函数;

使用rand()函数生成(0,1)区间上均匀分布的初始随机数x;

将初始随机数代入CDF的反函数即可得到我们需要的标准Cauchy随机数

C(1)_x=tan((x-1/2)*pi);

显然,上面的CDF的反函数起关键作用。在CDF的反函数中,概率变成自变量(对应0和1之间的随机数),因变量就是所求随机数(对应负无穷到正无穷的随机数)。于是,我们可求得非标准柯西随机数生成公式为:

C(gamma, x0)_x = gamma*tan((x-1/2)*pi) + x0 ; 

即 C(gamma, x0)_x = gamma*C(1)_x + x0 ;

那么,在python中,要得到gamma为2的非标准柯西随机数,只需要在原来基础上乘以2,即

C(1)_x = numpy.random.standar.cauchy(1)

C(2)_x = 2*numpy.random.standar.cauchy(1)


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。