python生成随机数,如何生成均匀分布的随机数
Python中生成标准激情香菇的函数是:numpy . random . standard _ Cauchy(size),
我在想,我们能生成一个非标准的柯西随机数吗?那么有几个问题:
(1)标准柯西随机数和非标准不幸随机数之间有转换关系吗?(否)
(2)柯西随机数是如何产生的?
(3)柯西随机数与概率密度或概率分布有关吗?
带着这些疑问,我先查了一下什么是激情香菇,包括密度函数和概率分布函数的表达式(来自百度百科)。
热情蘑菇也叫ygdyf分布,是以jddxmf和自然猫命名的连续概率分布,如图。它的概率密度函数是
其中:是定义分布峰值位置的位置参数;最大值一半宽度的比例参数。作为一种概率分布,通常被称为激情蘑菇,物理学家也称之为洛伦兹分布或布赖特-维格纳分布。它在物理学中的重要性很大程度上归因于它是描述强迫共振的微分方程的解这一事实。在光谱学中,它描述由于共振或其他机制而变宽的光谱线的形状。记住随机变量X是百香菇的特例,称为标准百香菇,其概率密度函数为:
它对应的累积分布函数是:然后,在生成柯西随机数的时候,网上有人这么做了(链接):
计算柯西分布的累积分布函数(CDF)的反函数;
用rand()函数生成初始随机数x均匀分布在(0,1)区间上;
将初始随机数代入CDF的反函数可以得到我们需要的标准Cauchy随机数:
c(1)_ x=tan((x-1/2)* pi);
显然,上面CDF的反函数起了关键作用。在CDF的反函数中,概率成为自变量(对应0到1之间的随机数),因变量是要求的随机数(对应从负无穷大到正无穷大的随机数)。因此,我们可以得到非标准柯西随机数代公式如下:
c(,x0)_ x=* tan((x-1/2)* pi)x0;
即C(,x0)_ x=* C(1)_ XXX;
然后,在python中,要得到gamma为2的非标准柯西随机数,只需要乘以2,也就是
c(1)_ x=numpy . random . standar . Cauchy(1)
c(2)_ x=2 * numpy . random . standar . Cauchy(1)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。