如何从 Matlab 中的柯西分布中提取随机数

How to draw random number from a Cauchy Distribution in Matlab

我知道可以从 Normal Distribution 中提取随机数,如下所示

normrnd(mu, sd)

其中 mu=meansd=standard deviation

但是我们如何从 Cauchy Distribution 中抽取一个随机数给定 location parameterscale parameter,因为 matlab 中没有可用的内置函数。有关柯西分布的详细信息,请参阅 Link1 and Link2

如果你知道 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

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

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