文档库 最新最全的文档下载
当前位置:文档库 › matlab产生随机数的方法

matlab产生随机数的方法

matlab产生随机数的方法
matlab产生随机数的方法

matlab产生随机数的方法

第一种方法是用 random 语句,其一般形式为

y = random('分布的英文名',A1,A2,A3,m,n),

表示生成 m 行 n 列的m × n 个参数为 ( A1 , A2 , A3 ) 的该分布的随机数。例如:

(1) R = random('Normal',0,1,2,4): 生成期望为 0,标准差为 1 的(2 行 4 列)2× 4 个正态随机数

(2) R = random('Poisson',1:6,1,6): 依次生成参数为 1 到 6 的(1 行 6 列)6 个 Poisson 随机数

第二种方法是针对特殊的分布的语句:

一.几何分布随机数(下面的 P,m 都可以是矩阵)

R = geornd(P) (生成参数为 P 的几何随机数)

R = geornd(P,m) (生成参数为 P 的× m 个几何随机数)

R = geornd(P,m,n) (生成参数为 P 的 m 行 n 列的m × n 个几何随机数)

例如

(1) R = geornd(1./ 2.^(1:6)) ( 生成参数依次为 1/2,1/2^2,到 1/2^6 的 6 个几何随机数)

(2) R = geornd(0.01,[1 5]) (生成参数为 0.01 的(1行5列)5 个几何随机数).

二.Beta 分布随机数

R = betarnd(A,B) (生成参数为 A,B 的 Beta 随机数)

R = betarnd(A,B,m) (生成× m 个数为 A,B 的 Beta 随机数)

R = betarnd(A,B,m,n) (生成 m 行 n 列的m × n 个数为 A,B 的 Beta 随机数).

三.正态随机数

R = normrnd(MU,SIGMA) (生成均值为 MU,标准差为 SIGMA 的正态随机数)R = normrnd(MU,SIGMA,m) (生成1× m 个正态随机数)

R = normrnd(MU,SIGMA,m,n) (生成 m 行 n 列的m × n 个正态随机数)例如

(1) R = normrnd(0,1,[1 5]) 生成 5 个正态(0,1) 随机数

(2) R = normrnd([1 2 3;4 5 6],0.1,2,3) 生成期望依次为[1,2,3;4,5,6], 方差为 0.1 的2× 3 个正态随机数.

四.二项随机数:类似地有

R = binornd(N,P) R = binornd(N,P,m) R = binornd(N,p,m,n) 例如

n = 10:10:60; r1 = binornd(n,1./n) 或 r2 = binornd(n,1./n,[1 6]) (都生成参数分别为

1 1 ), L, ( 60, ) 的6个二项随机数.

(10,

10 60

五.自由度为 V 的χ 2 随机数:

R = chi2rnd(V) R = chi2rnd(V R = chi2rnd(V

,m) ,m,n)

六.期望为 MU 的指数随机数(即 Exp 随机数):

1

MU

R = exprnd(MU) R = exprnd(MU,m) R = exprnd(MU,m,n)

七.自由度为 V1, V2 的 F 分布随机数:

R = frnd(V1,V2) R = frnd(V1, V2,m) R = frnd(V1,V2,m,n)

八.Γ ( A, λ ) 随机数:

R = gamrnd(A,lambda) R = gamrnd(A,lambda,m) R = gamrnd

(A,lambda,m,n)

九.超几何分布随机数:

R = hygernd(N,K,M) R = hygernd(N,K,M,m) R =

hygernd(N,K,M,m,n)

十.对数正态分布随机数

R = lognrnd(MU,SIGMA) R = lognrnd(MU,SIGMA,m) R = lognrnd(MU,SIGMA,m,n)

十一.负二项随机数:

R = nbinrnd(r,p) R = nbinrnd(r,p,m) R = nbinrnd(r,p,m,n) 十二.Poisson 随机数:

R = poissrnd(lambda) R = poissrnd(lambda,m) R =

poissrnd(lambda,m,n)

例如,以下 3 种表达有相同的含义:lambda = 2; R =

poissrnd(lambda,1,10)

(或 R = poissrnd(lambda,[1 10]) 或 R = poissrnd(lambda(ones(1,10)))

十三.Rayleigh 随机数:

R = raylrnd(B) R = raylrnd(B,m) R = raylrnd(B,m,n)

十四.V 个自由度的 t 分布的随机数:

R = trnd(V) R = trnd(V,m) R = trnd(V,m,n)

42

十五.离散的均匀随机数:

R = unidrnd(N) R = unidrnd(N,m) R = unidrnd(N,m,n)

十六.[A,B] 上均匀随机数

R = unifrnd(A,B) R = unifrnd(A,B,m) R = unifrnd(A,B,m,n)

例如 unifrnd(0,1:6)与 unifrnd(0,1:6,[1 6]) 都依次生成[0,1] 到[0,6]的6个均匀随机数.:

十七.Weibull 随机数

R = weibrnd(A,B) R = weibrnd(A,B,m) R = weibrnd(A,B,m,n)

MATLAB中产生高斯白噪声的两个函数

MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN 用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。

1. WGN:产生高斯白噪声

y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。

y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。

y = wgn(m,n,p,imp,state) 重置RANDN的状态。

在数值变量后还可附加一些标志性参数:

y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。

y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。

2. AWGN:在某一信号中加入高斯白噪声

y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果

x是复数,就加入复噪声。

y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。

y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。

y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。

注释

1. 分贝(decibel, dB):分贝(dB)是表示相对功率或幅度电平的标准单位,换句话说,就是我们用来表示两个能量之间的差别的一种表示单位,它不是一个绝对单位。例如,电子系统中将电压、电流、功率等物理量的强弱通称为电平,电平的单位通常就以分贝表示,即事先取一个电压或电流作为参考值(0dB),用待表示的量与参考值之比取对数,再乘以20作为电平的分贝数(功率的电平值改乘10)。

2. 分贝瓦(dBW, dB Watt):指以1W的输出功率为基准时,用分贝来测量的功率放大器的功率值。

3. dBm (dB-milliWatt):即与1milliWatt(毫瓦)作比较得出的数字。

0 dBm = 1 mW

10 dBm = 10 mW

20 dBm = 100 mW

也可直接用randn函数产生高斯分布序列,例如:

y=randn(1,2500);

y=y/std(y);

y=y-mean(y);

a=0.0128;

b=sqrt(0.9596);

y=a+b*y;

matlab 产生随机数命令大全

matlab产生随机数 Matlab(https://www.wendangku.net/doc/3c5410328.html,) 随机数生成方法: 第一种方法是用 random 语句,其一般形式为 y = random('分布的英文名',A1,A2,A3,m,n), 表示生成 m 行 n 列的 m × n 个参数为 ( A1 , A2 , A3 ) 的该分布的随机数。例如: (1) R = random('Normal',0,1,2,4): 生成期望为 0,标准差为 1 的(2 行 4 列)2× 4 个正态随机数 (2) R = random('Poisson',1:6,1,6): 依次生成参数为 1 到 6 的(1 行 6 列)6 个 Poisson 随机数 第二种方法是针对特殊的分布的语句: 一.几何分布随机数(下面的 P,m 都可以是矩阵) R = geornd(P) (生成参数为 P 的几何随机数) R = geornd(P,m) (生成参数为 P 的× m 个几何随机数) 1 R = geornd(P,m,n) (生成参数为 P 的 m 行 n 列的 m × n 个几何随机数) 例如 (1) R = geornd(1./ 2.^(1:6)) ( 生成参数依次为 1/2,1/2^2,到 1/2^6 的 6 个几何随机数) (2) R = geornd(0.01,[1 5]) (生成参数为 0.01 的(1行5列)5 个几何随机数). 二.Beta 分布随机数 R = betarnd(A,B) (生成参数为 A,B 的 Beta 随机数) R = betarnd(A,B,m) (生成× m 个数为 A,B 的 Beta 随机数) 1 R = betarnd(A,B,m,n) (生成 m 行 n 列的 m × n 个数为 A,B 的 Beta 随机数). 三.正态随机数 R = normrnd(MU,SIGMA) (生成均值为 MU,标准差为 SIGMA 的正态随机数)R = normrnd(MU,SIGMA,m) (生成 1× m 个正态随机数) R = normrnd(MU,SIGMA,m,n) (生成 m 行 n 列的 m × n 个正态随机数)例如 (1) R = normrnd(0,1,[1 5]) 生成 5 个正态(0,1) 随机数 (2) R = normrnd([1 2 3;4 5 6],0.1,2,3) 生成期望依次为[1,2,3;4,5,6], 方

概率特性仿真实验与程序-Matlab仿真-随机数生成-负指数分布-k阶爱尔兰分布-超指数分布

概率特性仿真实验与程序-Matlab 仿真-随机数生成-负指数分布-k 阶 爱尔兰分布-超指数分布 使用Java 中的SecureRandom .nextDouble()生成一个0~1之间的随机浮点数,然后使用反函数法生成一个符合指数分布的随机变量(反函数求得为λ) 1ln(R x --=)。指数分布的 参数λ为getExpRandomValue 函数中的参数lambda 。生成一个指数分布的随机变量的代码如下,后面都将基于该函数生成一组负指数分布、K 阶爱尔兰分布、2阶超指数分布随机变量,然后将生成的随机数通过matlab 程序进行仿真,对随机数的分布特性进行验证。 生成一组参数为lambda (λ)的负指数分布的随机变量 通过下面的函数生成一组λ参数为lambda 的随机变量,其中size 表示随机变量的个数。通过该函数生成之后,可以将这些随机值保存在文件中,以备分析和验证,比如保存在exp.txt 文件中,供下面介绍的matlab 程序分析。 通过genExp (1000000, 0.2)生成1000000个参数为0.2的随机变量,然后保存到exp.txt 中,然后使用下面的matlab 程序对这些随机数的性质进行验证,如果这些随机数符合λ=0.2的负指数分布,则其均值应为1/λ,即1/0.2=5,其方差应为1/λ2=1/(0.2*0.2)=25。然后对这些随机数的概率分布进行统计分析,以长度为1的区间为统计单位,统计各区间内随机数出现的频数,求出在各区间的概率,绘制图形,与参数为λ的真实负指数分布曲线进行对比。下图为matlab 代码

如下图所示,均值为4.996423,约等于5,方差为24.96761,约等于25,与实际情况相符。此外,通过matlab统计的概率密度函数曲线与真实曲线基本重合(其中在0-1之间没有重合的原因是,实际情况是在0-1之间有无数个点,而matlab统计时以1为一个区间进行统计,只生成了一个统计项,而这无数个点的概率全部加到1点处,因此两条线没有重合,而且1点处的值远大于实际值,如果统计单位划分越细,0-1之间的拟合度更高),表明生成的随机数符合负指数分布。

MatLAB 随机数

常见分布函数表

Matlab中产生正态分布随机数的函数normrnd 功能:生成服从正态分布的随机数 语法: R=normrnd(MU,SIGMA) R=normrnd(MU,SIGMA,m) R=normrnd(MU,SIGMA,m,n) 说明: R=normrnd(MU,SIGMA):生成服从正态分布(MU参数代表均值,DELTA参数代表标准差)的随机数。输入的向量或矩阵MU和SIGMA必须形式相同,输出R也和它们形式相同。标量输入将被扩展成和其它输入具有相同维数的矩阵。 R=norrmrnd(MU,SIGMA,m):生成服从正态分布(MU参数代表均值,DELTA参数代表标准差)的随机数矩阵,矩阵的形式由m定义。m是一个1×2向量,其中的两个元素分别代表返回值R中行与列的维数。 R=normrnd(MU,SIGMA,m,n):生成m×n形式的正态分布的随机数矩阵。

>> help normrnd NORMRND Random arrays from the normal distribution. R = NORMRND(MU,SIGMA) returns an array of random numbers chosen from a normal distribution with mean MU and standard deviation SIGMA. The size of R is the common size of MU and SIGMA if both are arrays. If either parameter is a scalar, the size of R is the size of the other parameter. R = NORMRND(MU,SIGMA,M,N,...) or R = NORMRND(MU,SIGMA,[M,N,...]) returns an M-by-N-by-... array. 例:生成正态分布随机数。 >> a=normrnd(0,1) a = -1.4814

Matlab 各种随机数设置

Matlab 各种随机数设置 randn(伪随机正态分布数) Normally distributed pseudorandom numbers Syntax r = randn(n) randn(m,n) randn([m,n]) randn(m,n,p,...) randn([m,n,p,...]) randn(size(A)) r = randn(..., 'double') r = randn(..., 'single') Description r = randn(n) returns an n-by-n matrix containing pseudorandom values drawn from the standard normal distribution. randn(m,n) or randn([m,n]) returns an m-by-n matrix. randn(m,n,p,...) or randn([m,n,p,...]) returns an m-by-n-by-p-by-... array. randn returns a scalar. randn(size(A)) returns an array the same size as A. r = randn(..., 'double') or r = randn(..., 'single') returns an array of normal values of the specified class. Note The size inputs m, n, p, ... should be nonnegative integers. Negative integers are treated as 0. The sequence of numbers produced by randn is determined by the internal state of the uniform pseudorandom number generator that underlies rand, randi, and randn. randn uses one or more uniform values from that default stream to generate each normal value. Control the default stream using its properties and methods. Note In versions of MATLAB prior to 7.7 (R2008b), you controlled the internal state of the random number stream used by randn by calling randn directly with the 'seed' or 'state' keywords. Examples Generate values from a normal distribution with mean 1 and standard deviation 2. r = 1 + 2.*randn(100,1); Generate values from a bivariate normal distribution with specified mean vector and covariance matrix. mu = [1 2]; Sigma = [1 .5; .5 2]; R = chol(Sigma); z = repmat(mu,100,1) + randn(100,2)*R; Replace the default stream at MATLAB startup, using a stream whose seed is based on clock, so that randn will return different values in different MATLAB sessions. It is usually not desirable to do this more than once per MATLAB session. RandStream.setDefaultStream ...

MATLAB产生各种分布的随机数

M A T L A B产生各种分布 的随机数 The final revision was on November 23, 2020

MATLAB产生各种分布的随机数 1,均匀分布U(a,b): 产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:unifrnd (a,b) 2,0-1分布U(0,1) 产生m*n阶[0,1]均匀分布的随机数矩阵:rand (m, n) 产生一个[0,1]均匀分布的随机数:rand 4,二类分布binornd(N,P,mm,nn)如binornd(10,,mm,nn) 即产生mm*nn均值为N*P的矩阵 binornd(N,p)则产生一个。而binornd(10,,mm)则产生mm*mm的方阵,军阵为N*p。 5,产生m*n阶离散均匀分布的随机数矩阵: unidrnd(N,mm,nn)产生一个数值在1-N区间的mm*nn矩阵 6,产生mm nn阶期望值为的指数分布的随机数矩阵: exprnd( ,mm, nn) 此外,常用逆累积分布函数表 函数名调用格式函数注释 norminv X=norminv(P,mu,sigma) 正态逆累积分布函数 expinv X=expinv(P,mu) 指数逆累积分布函数 weibinv X=weibinv(P,A,B) 威布尔逆累积分布函数 logninv X=logninv(P,mu,sigma) 对数正态逆累积分布函数

Chi2inv X=chi2inv(P,A,B) 卡方逆累积分布函数 Betainv X=betainv(P,A,B) β分布逆累积分布函数 随机数的产生 4.1.1 二项分布的随机数据的产生 命令参数为N,P的二项随机数据 函数 binornd 格式 R = binornd(N,P) %N、P为二项分布的两个参数,返回服从参数为N、P的二项分布的随机数,N、P大小相同。 R = binornd(N,P,m) %m指定随机数的个数,与R同维数。 R = binornd(N,P,m,n) %m,n分别表示R的行数和列数 例4-1 >> R=binornd(10, R = 3 >> R=binornd(10,,1,6) R = 8 1 3 7 6 4 >> R=binornd(10,,[1,10]) R = 6 8 4 6 7 5 3 5 6 2 >> R=binornd(10,,[2,3]) R = 7 5 8 6 5 6 >>n = 10:10:60; >>r1 = binornd(n,1./n) r1 = 2 1 0 1 1 2 >>r2 = binornd(n,1./n,[1 6]) r2 = 0 1 2 1 3 1 4.1.2 正态分布的随机数据的产生

matlab中产生随机数的程序

1.由U(0,1)分布的随机数产生U(a,b)的随机数 r=rand(1,20); s=a+(b-a)*r; 例: r=rand(1,20); s=2+(10-2)*r s = Columns 1 through 11 7.0589 2.7803 4.2280 6.3751 9.6601 9.7191 3.2609 9.7647 9.6573 5.8830 8.4022 Columns 12 through 20 3.1351 5.3741 9.3259 8.3377 9.6759 7.2459 2.2857 8.7930 9.4719 2.指数分布的抽样 (6.9)n=10的时候 u=rand(1,19); r=1; for i=1:19 r=r*u(i); end s=log(r); m=1; for j=11:19 if(u(j-1)>u(j)) y(m)=u(j) else y(m)=u(j) end m=m+1; end for k=2:9 x(k)=(y(k-1)-y(k))*s end x y = 0.4168

0.4168 0.6569 y = 0.4168 0.6569 0.6280 y = 0.4168 0.6569 0.6280 0.2920 y = 0.4168 0.6569 0.6280 0.2920 0.4317 y = 0.4168 0.6569 0.6280 0.2920 0.4317 0.0155 y = 0.4168 0.6569 0.6280 0.2920 0.4317 0.0155 0.9841 y = 0.4168 0.6569 0.6280 0.2920 0.4317 0.0155 0.9841 0.1672

MATLAB随机数生成

2009年03月20日星期五 03:25 P.M. rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n 的随机数矩阵 (现成的函数) 另外: Matlab随机数生成函数 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器 nctrnd 非中心t分布的随机数生成器 ncx2rnd 非中心卡方分布的随机数生成器 normrnd 正态(高斯)分布的随机数生成器 poissrnd 泊松分布的随机数生成器 raylrnd 瑞利分布的随机数生成器 trnd 学生氏t分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 weibrnd 威布尔分布的随机数生成器 (From:https://www.wendangku.net/doc/3c5410328.html,/question/30033707.html) matlab生成随机数据 matlab本身提供很多的函数来生成各种各样的随机数据: normrnd 可以生成一定均值和标准差的正态分布 gamrnd 可以生成gamma分布的伪随机数矩阵 chi2rnd 可以生成卡方分布的伪随机数矩阵 trnd 可以生成t分布的伪随机数矩阵 frnd 可以生成f分布的伪随机数矩阵 raylrnd 可以生成rayleigh分布的伪随机数矩阵

matlab产生随机数的方法

matlab 产生随机数的方法 第一种方法是用 random 语句,其一般形式为 y = random (' 分布的英文名 ',A1,A2,A3,m,n ) , 表示生成m 行n 列的m x n 个参数为(A1 , A2 , A3 ) 的该分 布的随机数。 例如: (1) R = random ('Normal',0,1,2,4): 生成期 望为 0, 标准差为 1 的(2 行 4 列)2 x 4个正态随机数 (2) R = random ('Poisson',1:6,1,6): 依次 生成参数为 1 到 6 的(1 行 6 列 )6 个 Poisson 随机数 第二种方法是针对特殊的分布的语句: 一. 几何分布随机数 R = geornd(P) R = geornd(P,m) (下面的 P , m 都可以是矩阵) (生成参数为 P 的几何随机数) (生成参数为 P 的 x m 个几何随机数) 1 R = geornd (P,m,n ) (生成参数为 P 的 m 行 n 列的 m x n 个几何随 机数) 例如 ⑴ R = geornd (1./ 2八(1:6))(生成参数依次为 1/2,1/2A 2,至U 1/2A 6 的 6 个几 何随机数 ) ⑵ R = geornd (0.01,[1 5])( 生成参数为0.01的(1行5列)5个几何随 机数). 二. Beta 分布随机数 R = betarnd(A,B) R = betarnd(A,B,m) 生成 m 行 n 列的 m x n 个数为 A,B 的 Beta 随 三.正态随机数 R = normrnd (MU, SIGMA ) (生成均值为 MU,标准差为SIGMA 的正态随机数) R = normrnd (MU , SIGMA,m ) (生成 1x m 个正态随机数) R = normrnd(MU , SIGMA,m,n) (生成 m 行 n 列的 m x n 个正态随机数) 例如 (1) R = normrnd(0,1,[1 5]) 生成 5 个正态 (0,1) 随机数 (2) R = normrnd([1 2 3;4 5 6],0.1,2,3) 生成期望依次为 [1,2,3;4,5,6], 方 差为 0.1 的 2x 3 个正态随机数. 生成参数为 A,B 的 Beta (生成 x m 个数为 A,B 随机数) 的 Beta 随机数) R = betarnd(A,B,m,n) 机数) .

matlab随机数生成方法

Matlab 随机数生成方法(转自雅虎空间) 第一种方法是用random 语句,其一般形式为 y = random('分布的英文名',A1,A2,A3,m,n), 表示生成m 行n 列的m × n 个参数为( A1 , A2 , A3 ) 的该分布的随机数。例如: (1) R = random('Normal',0,1,2,4): 生成期望为0,标准差为1 的(2 行4 列)2× 4 个正态随机数 (2) R = random('Poisson',1:6,1,6):依次生成参数为1 到6 的(1 行6 列)6 个Poisson 随机数 第二种方法是针对特殊的分布的语句: 一.几何分布随机数(下面的P,m 都可以是矩阵) R = geornd(P) (生成参数为P 的几何随机数) R = geornd(P,m)(生成参数为P 的× m 个几何随机数) 1 R = geornd(P,m,n)(生成参数为P 的m 行n 列的m × n 个几何随机数) 例如 (1)R = geornd(1./ 2.^(1:6)) ( 生成参数依次为1/2,1/2^2,到1/2^6 的6 个几何随机数) (2)R = geornd,[1 5]) (生成参数为的(1行5列)5 个几何随机数). 二.Beta 分布随机数 R = betarnd(A,B)(生成参数为A,B 的Beta 随机数) R = betarnd(A,B,m)(生成× m 个数为A,B 的Beta 随机数) 1 R = betarnd(A,B,m,n)(生成m 行n 列的m × n 个数为A,B 的Beta 随机数). 三.正态随机数 R = normrnd(MU,SIGMA)(生成均值为MU,标准差为SIGMA 的正态随机数) R = normrnd(MU,SIGMA,m)(生成1× m 个正态随机数) R = normrnd(MU,SIGMA,m,n) (生成m 行n 列的m × n 个正态随机数) 例如 (1) R = normrnd(0,1,[1 5]) 生成5 个正态(0,1) 随机数 (2) R = normrnd([1 2 3;4 5 6],,2,3)生成期望依次为[1,2,3;4,5,6], 方差为的2× 3 个正态随机数. 四.二项随机数:类似地有 R = binornd(N,P)R = binornd(N,P,m) R = binornd(N,p,m,n) 例如 n = 10:10:60; r1 = binornd(n,1./n)或r2 = binornd(n,1./n,[1 6]) (都生成参数分别为1 1 ), L, ( 60, ) 的6个二项随机数. (10, 10 60 五.自由度为V 的χ 2 随机数:

matlab随机数生成(全部函数)

matlab 全部的随机数函数 (一)Matlab内部函数 a.基本随机数 Matlab中有两个最基本生成随机数的函数。 1.rand() 生成(0,1)区间上均匀分布的随机变量。基本语法: rand([M,N,P ...]) 生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子: rand(5,1) %生成5个随机数排列的列向量,一般用这种格式 rand(5) %生成5行5列的随机数矩阵 rand([5,4]) %生成一个5行4列的随机数矩阵 生成的随机数大致的分布。 x=rand(100000,1); hist(x,30); 由此可以看到生成的随机数很符合均匀分布。(视频教程会略提及hist()函数的作用) 2.randn() 生成服从标准正态分布(均值为0,方差为1)的随机数。基本语法和rand()类似。 randn([M,N,P ...]) 生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子: randn(5,1) %生成5个随机数排列的列向量,一般用这种格式 randn(5) %生成5行5列的随机数矩阵 randn([5,4]) %生成一个5行4列的随机数矩阵 生成的随机数大致的分布。 x=randn(100000,1); hist(x,50); 由图可以看到生成的随机数很符合标准正态分布。 b.连续型分布随机数 如果你安装了统计工具箱(Statistic Toolbox),除了这两种基本分布外,还可以用Matlab内部函数生成符合下面这些分布的随机数。 3.unifrnd() 和rand()类似,这个函数生成某个区间内均匀分布的随机数。基本语法 unifrnd(a,b,[M,N,P,...]) 生成的随机数区间在(a,b)内,排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

matlab随机数生成方法

Matlab(https://www.wendangku.net/doc/3c5410328.html,) 随机数生成方法 第一种方法是用random 语句,其一般形式为 y = random('分布的英文名',A1,A2,A3,m,n), 表示生成m 行n 列的m × n 个参数为( A1 , A2 , A3 ) 的该分布的随机数。例如: (1) R = random('Normal',0,1,2,4): 生成期望为0,标准差为1 的(2 行4 列)2× 4 个正态随机数 (2) R = random('Poisson',1:6,1,6):依次生成参数为1 到6 的(1 行6 列)6 个Poisson 随机数 第二种方法是针对特殊的分布的语句: 一.几何分布随机数(下面的P,m 都可以是矩阵) R = geornd(P) (生成参数为P 的几何随机数) R = geornd(P,m)(生成参数为P 的× m 个几何随机数) R = geornd(P,m,n)(生成参数为P 的m 行n 列的m × n 个几何随机数) 例如 (1)R = geornd(1./ 2.^(1:6)) ( 生成参数依次为1/2,1/2^2,到1/2^6 的6 个几何随机数) (2)R = geornd(0.01,[1 5]) (生成参数为0.01 的(1行5列)5 个几何随机数). 二.Beta 分布随机数 R = betarnd(A,B)(生成参数为A,B 的Beta 随机数) R = betarnd(A,B,m)(生成× m 个数为A,B 的Beta 随机数) R = betarnd(A,B,m,n)(生成m 行n 列的m × n 个数为A,B 的Beta 随机数). 三.正态随机数 R = normrnd(MU,SIGMA)(生成均值为MU,标准差为SIGMA 的正态随机数) R = normrnd(MU,SIGMA,m)(生成1× m 个正态随机数) R = normrnd(MU,SIGMA,m,n) (生成m 行n 列的m × n 个正态随机数) 例如

Matlab随机数产生的问题

Matlab随机数产生的问题 2009-02-13 08:13 这2天发现这个问题讨论较多,所以就搜索了一些资料。发现自己之前的理解有些很有问题,同时欢迎大家继续讨论。先澄清一下几个容易弄错的地方(也不一定全对) (1)用计算机产生的是“伪随机数”。用投色子计数的方法产生真正的随机数 , 但电脑若也这样做 , 将会占用大量内存 ; 用噪声发生器或放射性物质也可产生真正的随机数 , 但不可重复 . 而用数学方法产生最适合计算机 , 这就是周期有限 , 易重复的” 伪随机数” (2)随机数的产生需要有一个随机的种子,因为用计算机产生的随机数是通过递推的方法得来的,必须有一个初始值。 (3)用同一台电脑,且在初始值和递推方法相同的情况下,可以产生相同的随机序列(由于以前每次使用randn或者rand得到都是不同值,所以曾经误以为相同的seed无法产生相同的序列) [size=2][color=red][b]一 matlab里产生随机数的方法[/b][/color][/size] matlab里和随机数有关的函数: (1) rand:产生均值为0.5、幅度在0~1之间的伪随机数 (2) randn:产生均值为0、方差为1的高斯白噪声 (3) randperm(n):产生1到n的均匀分布随机序列 (4) normrnd(a,b,c,d):产生均值为a、方差为b大小为cXd的随机矩阵 还有很多的扩展函数,不再一一列出。不过他们都调用的是rand或者randn函数,由此可见在matlab里rand和randn是产生随机数的关键所在。看来只有看他们的源文件了 function [varargout] = randn(varargin) %%%help 文档的内容略去%%% if nargout == 0 builtin('randn', varargin{:}); else [varargout{1:nargout}] = builtin('randn', varargin{:}); end 从这里也看不出到底是怎么产生的,就只看到builtin。而builtin函数的源文件是这样的: %BUILTIN Execute built-in function from overloaded method. % BUILTIN is used in methods that overload built-in functions to execute % the original built-in function. If F is a string containing the name % of a built-in function then BUILTIN(F,x1,...,xn) evaluates that % function at the given arguments. % % BUILTIN(...) is the same as FEVAL(...) except that it will call the % original built-in version of the function even if an overloaded one % exists (for this to work, you must never overload BUILTIN). % % [y1,..,yn] = BUILTIN(F,x1,...,xn) returns multiple output arguments. %

生成高斯分布的matlab程序

clear all; close all; clc; randn('seed',0); %%一维高斯函数 mu=0; sigma=1; x=-6:0.1:6; y=normpdf(x,mu,sigma); plot(x,y); figure; %%二维或多维高斯函数 mu=[00]; sigma=[0.30;00.35]; [x y]=meshgrid(linspace(-8,8,80)',linspace(-8,8,80)'); X=[x(:) y(:)]; z=mvnpdf(X,mu,sigma); surf(x,y,reshape(z,80,80)); hold on; %再生成一个 mu=[40]; sigma=[1.20;0 1.85]; [x y]=meshgrid(linspace(-8,8,80)',linspace(-8,8,80)'); X=[x(:) y(:)]; z=mvnpdf(X,mu,sigma); surf(x,y,reshape(z,80,80)); Matlab 的随机函数(高斯分布均匀分布其它分布) Matlab中随机数生成器主要有: betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器

关于matlab生成随机数

一,matlab中生成随机数主要有三个函数:rand, randn,randi 1,rand 生成均匀分布的伪随机数。分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数 rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single' rand(RandStream,m,n)利用指定的RandStream(我理解为随机种子)生成伪随机数 2,randn 生成标准正态分布的伪随机数(均值为0,方差为1) 主要语法:和上面一样 3, randi 生成均匀分布的伪随机整数 主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数 randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵 r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵示例验证: 均值分布 概率分布图: y=rand(1,3000000); hist(y,2000); 散点图: y=rand(1,3000000); plot(y)

正态分布 概率分布图: y=randn(1,3000000); hist(y,2000); 散点图:

y=randn(1,3000000); plot(y); 二,关于随机种子,伪随机数的重复生成 正常情况下每次调用相同指令例如rand生成的伪随机数是不同的,例如: rand(1,3) rand(1,3) matlab的输出为: ans = 0.139043482536049 0.734007633362635 0.194791464843949 ans = 0.602204766324215 0.937923745019422 0.149285414707192 如何使两个语句生成的随机数相等呢? Matlab帮助中的下面章节有所叙述: Managing the Default Stream 管理默认(缺省)流

MATLAB伪随机数发生器

MATLAB伪随机数发生器.txt生活是过出来的,不是想出来的。放得下的是曾经,放不下的是记忆。无论我在哪里,我离你都只有一转身的距离。 均匀性较好的随机数生成 zz from https://www.wendangku.net/doc/3c5410328.html,/lanmuyd.asp?id=3379 随机数生成算法[1]是一类重要的算法,广泛应用于仿真技术等场合。然而,目前的伪随机数生成器(Pseudo-random number generator, PRNG)[2]存在一个重要缺陷,即样本分布与真实分布不一致,这主要发生在以下两种情况:①抽样代价过高,样本数目较少;②空间维数较高[3]。 因此,有必要寻找一类新的随机数发生器。准随机数发生器(Quasi-random number generator,QRNG)[4]能够生成稳定、低差异性的(low-discrepancy)样本,而与样本数目或空间维数无关[5]。故针对蒙特卡罗积分结果不稳定的情况,提出一种基于QRNG的蒙特卡罗积分,发现比传统方法性能有所提升。 伪随机数介绍 伪随机数是由确定的算法生成的,其分布函数与相关性均能通过统计测试。与真实随机数的差别在于,它们是由算法产生的,而不是一个真实的随机过程。一般地,伪随机数的生成方法主要有以下3种[6]: (1)直接法(Direct Method),根据分布函数的物理意义生成。缺点是仅适用于某些具有特殊分布的随机数,如二项式分布、泊松分布。 (2)逆转法(Inversion Method),假设U服从[0,1]区间上的均匀分布,令X=F-1(U),则X的累计分布函数(CDF)为F。该方法原理简单、编程方便、适用性广。 (3)接受拒绝法(Acceptance-Rejection Method):假设希望生成的随机数的概率密度函数(PDF)为f,则首先找到一个PDF为g的随机数发生器与常数c,使得f(x)≤cg(x),然后根据接收拒绝算法求解。由于算法平均运算c次才能得到一个希望生成的随机数,因此c的取值必须尽可能小。显然,该算法的缺点是较难确定g与c。 因此,伪随机数生成器(PRNG)一般采用逆转法,其基础是均匀分布,均匀分布PRNG 的优劣决定了整个随机数体系的优劣[7]。下文研究均匀分布的PRNG。 伪随机数生成器的缺点 重复做N=10000次试验,每次产生S=20与S=100个随机分布的样本,同时采用Kolmogorov- Smirnov假设检验(hypothesis test)来确定样本是否满足均匀分布。规定: ① 0假设(null hypothesis)为样本服从均匀分布;② 1假设(alternative hypothesis)为样本不服从均匀分布。 采用P值(∈[0, 1])衡量,P值越趋近于0,表示越有理由拒绝0假设,即样本不服从均匀分布;P值越趋近于1,表示越有理由接受0假设,即样本服从均匀分布。 如图1与图2所示:随着P值下降,样本也越来越不服从均匀分布。实践中希望P值越大越好。然而统计学的结论显示,P值一定服从均匀分布,与N、S大小无关,这表明由于随机性,总会出现某次抽样得到的样本不服从、甚至远离均匀分布。另外,样本大小的不同,造成检验标准的不同,直观上看S=100对应的均匀分布普遍比S=20对应的更均匀。因此,小样本情况下均匀分布PRNG的差异性尤为严重。

matlab 中的随机函数

Matlab中的几个随机函数 -randperm,sort,rand,randint Matlab自带函数randperm(n)产生1到n的整数的无重复的随机排列,利用它就可以得到无重复的随机数。 function p = randperm(n); %RANDPERM Random permutation. % RANDPERM(n) is a random permutation of the integers from 1 to n. % For example, RANDPERM(6) might be [2 4 5 6 1 3]. % % Note that RANDPERM calls RAND and therefore changes RAND's state. % % See also PERMUTE. % Copyright 1984-2002 The MathWorks, Inc. % $Revision: 5.10 $ $Date: 2002/04/09 00:26:14 $ [ignore,p] = sort(rand(1,n)); 原理:

1. rand(1, n)产生1行n列的0-1之内的随机数矩阵。 2. sort()把这个矩阵排序,返回的ignore是排序后的序列,p是排序后的序列的各数原来的索引,这个索引肯定是随机的,而且是在1到n 间无重复的整数。 附:《Matlab中的几个随机函数》 rand rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 randint randint(m,n,[1 N]):生成m×n的在1到N之间的随机整数矩阵,其效果与randint(m,n,N+1)相同。 >> randint(3,4,[1 10]) ans = 5 7 4 10 5 1 2 7 8 7 8 6 >> randint(3,4,11)

MATLAB RAND()函数

matlab中的rand函数(用于产生随机数) 均匀分布的随机数或矩阵 语法 Y = rand(n) Y = rand(m,n) Y = rand([m n]) Y = rand(m,n,p,...) Y = rand([m n p...]) Y = rand(size(A)) rand s = rand('state') 描述 rand函数产生由在(0, 1)之间均匀分布的随机数组成的数组。 Y = rand(n) 返回一个n x n的随机矩阵。如果n不是数量,则返回错误信息。 Y = rand(m,n) 或 Y = rand([m n]) 返回一个m x n的随机矩阵。 Y = rand(m,n,p,...) 或 Y = rand([m n p...]) 产生随机数组。 Y = rand(size(A)) 返回一个和A有相同尺寸的随机矩阵。 1,rand(3)*-2 rand(3)是一个3*3的随机矩阵(数值范围在0~1之间) 然后就是每个数乘上-2 2 ,用matlab随机产生60个1到365之间的正数 1+fix(365*rand(1,60)); 3,用rand 函数随机取100个从-1到1的数x1,x2,...,x = rand(1,100) * 2 - 1 我打开matlab,输入rand(3,3),产生一个结果;然后我把matlab整个关掉,再重新打开它,再次输入rand(3,3),两次输出的结果居然一样,实验了n次都一样。但是如果不关闭软件直接输入两次rand(3,3),则出来不同的结果。这个随机性到底是怎么回事?注:我使用的matlab6.5 问题补充:有没有真正的产生随机数的办法。 matlab随机函数rand使用中应注意的问题 rand产生的是0到1(不包括1)的随机数. matlab的rand函数生的是伪随机数,即由种子递推出来的,相同的种子,生成相同的随机数. matlab刚运行起来时,种子都为初始值,因此每次第一次执行rand得到的随机数都是相同的. 1.多次运行,生成相同的随机数方法: 用rand('state',S)设定种子S为35阶向量,最简单的设为0就好 例: rand('state',0);rand(10) 2. 任何生成相同的随机数方法: 试着产生和时间相关的随机数,种子与当前时间有关. rand('state',sum(100*clock)) 即: rand('state',sum(100*clock)) ;rand(10) 只要执行rand('state',sum(100*clock)) ;的当前计算机时间不现,生成的随机值就不现.

MATLAB产生各种分布的随机数

MATLAB产生各种分布的随机数 1,均匀分布U( a,b): 产生m*n 阶[a,b]均匀分布U (a,b)的随机数矩阵:unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:unifrnd (a,b) 2,0-1 分布U( 0,1) 产生m*n 阶[0,1]均匀分布的随机数矩阵:rand (m, n) 产生一个[0,1]均匀分布的随机数:rand 4,二类分布binornd(N,P,mm,nn) 如binornd(10,0.5,mm,nn) 即产生mm*nn 均值为N*P 的矩阵 binornd(N,p) 则产生一个。而binornd(10,0.5,mm) 则产生mm*mm 的方阵,军阵为N*p 。5,产生m*n 阶离散均匀分布的随机数矩阵: unidrnd(N,mm,nn) 产生一个数值在1-N 区间的mm*nn 矩阵 6,产生mm nn阶期望值为的指数分布的随机数矩阵:exprnd ( ,mm, nn) 此外,常用逆累积分布函数表 函数名调用格式函数注释 normin X=norminv(P,mu,sigma) 正态逆累积分布函数 v 指数逆累积分布函数 expinv X=expinv(P,mu) weibinv X=weibinv(P,A,B) 威布尔逆累积分布函数 对数正态逆累积分布函数 logninv X=logninv(P,mu,sigma) 卡方逆累积分布函数 Chi2inv X=chi2inv(P,A,B) Betainv X=betainv(P,A,B) β分布逆累积分布函数

4.1 随机数的产生 4.1.1 二项分布的随机数据的产生 命令参数为N,P 的二项随机数据 函数binornd 格式R = binornd(N,P) %N 、P为二项分布的两个参数,返回服从参数为项 N、P的二分布的随机数,N、P 大小相同。 R = binornd(N,P,m) %m 指定随机数的个数,与R 同维数。 R = binornd(N,P,m,n) %m,n 分别表示R 的行数和列数 例4-1 >> R=binornd(10,0.5) R = 3 >> R=binornd(10,0.5,1,6) R = 8 1 3 7 6 4 >> R=binornd(10,0.5,[1,10]) R = 6 8 4 6 7 5 3 5 6 2 >> R=binornd(10,0.5,[2,3]) R = 7 5 8 6 5 6 >>n = 10:10:60; >>r1 = binornd(n,1./n)

相关文档