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
”:unifrnd
、exprnd
、normrnd
,...在内部,这些调用一些接下来要描述的函数,并应用一些变换来实现所需的分布。
- 最低级别(内置)、最快的函数是:
rand
用于 (0,1) 上的连续均匀分布,randn
用于具有均值的正态(高斯)分布0 和方差 1,randi
表示均匀离散分布。
我想从 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
”:unifrnd
、exprnd
、normrnd
,...在内部,这些调用一些接下来要描述的函数,并应用一些变换来实现所需的分布。 - 最低级别(内置)、最快的函数是:
rand
用于 (0,1) 上的连续均匀分布,randn
用于具有均值的正态(高斯)分布0 和方差 1,randi
表示均匀离散分布。