如何用matlab生成一个服从威布尔分布的随机数

供稿:hz-xin.com     日期:2025-01-14
请问如何用matlab生成18个129到132之间的服从威布尔分布的随机数?

威尔布分布的期望主要跟尺度参数A有关,形状参数B作为期望的调整项影响较小.
参考代码如下:

clear;
val_max=132;
val_min=129;
N_num=18;
A=(val_max+val_min)/2;
B=0.1;
data=0;
C=find(data>val_min&data<val_max,N_num,'first');
N=3;
while length(C)<N_num
data=wblrnd(A,B,1*10^N,1);
C=find(data>val_min&data<val_max,N_num,'first');
N=N+1;
end
data(C)

clear;clc;p=@(a,u1,u2)(1-a)*geornd(u1/(1+u2))+a*geornd(u2/(1+u2))p(0.5,.2,.3)

matlab 中可以利用wblrnd命令产生所需的服从韦布尔分布的随机数,如下:
R = wblrnd(A,B)
R = wblrnd(A,B,m,n,...)
R = wblrnd(A,B,[m,n,...])
其中,A为尺度参数,B为形状参数。m和n为所需要的数的形式,比如说生成m行*n列的矩阵。
matlab 内部解释为:
This MATLAB function generates random numbers for the Weibull distribution with
scale parameter, A and shape parameter, B.
R = wblrnd(A,B)
R = wblrnd(A,B,m,n,...)
R = wblrnd(A,B,[m,n,...])

生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵