MATLAB 函数从均匀分布中抽取样本

Function in MATLAB to draw samples from Uniform Distribution

我想从 MATLAB 中的代码定义的均匀分布中随机抽取:-

pd1 = makedist('Uniform','lower',-0.0319,'upper',0.0319); % X1

在 MATLAB 中,通常的命令是 random(),但帮助文件告诉我它仅适用于高斯混合分布。那么它是否也可以扩展用于均匀分布,或者是否有任何其他函数可以显式随机绘制 Monte Carlo 模拟。

对于uniform变量,可以使用random如下:

lower_limit = -0.0319;
upper_limit = 0.0319;
sz = [1 10];
x = random('unif', lower_limit, upper_limit, sz);

但这 过于复杂 ,而且很慢:random 分析输入并调用 unifrnd, which in turn does some checks and finally calls rand。相反,您可以只使用:

lower_limit = -0.0319;
upper_limit = 0.0319;
sz = [1 10];
x = lower_limit + (upper_limit-lower_limit)*rand(sz);

一般来说,有三个级别的函数可用于创建(伪)随机数:

  • random是一种生成随机数的通用接口。根据指定的输入,它调用适当的函数,例如 unifrnd 用于均匀分布,exprnd 用于指数分布,...
  • 每个发行版都有特定的函数,通常称为“···rnd”:unifrndexprndnormrnd,...在内部,这些调用一些接下来要描述的函数,并应用一些变换来实现所需的分布。
  • 最低级别(内置)、最快的函数是:rand 用于 (0,1) 上的连续均匀分布,randn 用于具有均值的正态(高斯)分布0 和方差 1,randi 表示均匀离散分布。