如何在Matlab中从Cauchy分布中提取随机数

如何在Matlab中从Cauchy分布中提取随机数,matlab,random,distribution,Matlab,Random,Distribution,我知道随机数可以从正态分布中提取,如下所示 normrnd(mu, sd) 其中mu=平均值和sd=标准偏差 但是,我们如何从给定的位置参数和比例参数的柯西分布中提取随机数,因为matlab中没有内置函数可用。有关Cauchy分布的更多信息,请参阅和。如果您了解cdf,您可以随时编写自己的函数 function x = cauchy_dist(location_parameter, scale_parameter) p_cdf = rand(); %uniform random from 0-

我知道随机数可以从正态分布中提取,如下所示

normrnd(mu, sd)
其中
mu=平均值
sd=标准偏差


但是,我们如何从给定的
位置参数
比例参数
柯西分布
中提取随机数,因为matlab中没有内置函数可用。有关Cauchy分布的更多信息,请参阅和。

如果您了解cdf,您可以随时编写自己的函数

function x = cauchy_dist(location_parameter, scale_parameter)
p_cdf = rand(); %uniform random from 0->1, since cdf by definition 0->1
x = location_parameter + scale_parameter*tan(pi*(p_cdf-0.5)); %solve cdf eqn for x

根据给出的解释,您可以使用以下转换从均匀随机数中获得柯西分布随机数:

r = tan(pi*(rand()-0.5))

我建议,在不知道任何关于这个发行版的其他信息的情况下。这有帮助吗?对于这个:我发现这个解x=位置参数+尺度参数*tan(pi*(p_cdf-0.5));谢谢,Gelliant——太多地依赖wolfram alphaYours也会起作用,而且可能会更快。x=位置参数-比例参数/tan(pi*p\u cdf);我只是不明白为什么它是一样的。这是因为
tan(任何东西-pi/2)
=
-1/tan(任何东西)