资源描述
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 ...
(RandStream('mt19937ar','seed',sum(100*clock)));
randn(1,5)
Save the current state of the default stream, generate 5 values, restore the state, and repeat the sequence.
defaultStream = RandStream.getDefaultStream;
savedState = defaultStream.State;
z1 = randn(1,5)
defaultStream.State = savedState;
z2 = randn(1,5) % contains exactly the same values as z1
Normrnd (随机正态分布数)
Normal random numbers
Syntax
R = normrnd(mu,sigma)
R = normrnd(mu,sigma,m,n,...)
R = normrnd(mu,sigma,[m,n,...])
Description
R = normrnd(mu,sigma) generates random numbers from the normal distribution with mean parameter mu and standard deviation parameter sigma. mu and sigma can be vectors, matrices, or multidimensional arrays that have the same size, which is also the size of R. A scalar input for mu or sigma is expanded to a constant array with the same dimensions as the other input.
R = normrnd(mu,sigma,m,n,...) or R = normrnd(mu,sigma,[m,n,...]) generates an m-by-n-by-... array. The mu, sigma parameters can each be scalars or arrays of the same size as R.
Examples
n1 = normrnd(1:6,1./(1:6))
n1 =
2.1650 2.3134 3.0250 4.0879 4.8607 6.2827
n2 = normrnd(0,1,[1 5])
n2 =
0.0591 1.7971 0.2641 0.8717 -1.4462
n3 = normrnd([1 2 3;4 5 6],0.1,2,3)
n3 =
0.9299 1.9361 2.9640
4.1246 5.0577 5.9864
randperm (RandStream) (区域内的所有整数的随机分布)
Random permutation
randperm(s,n)
Description
randperm(s,n) generates a random permutation of the integers from 1 to n. For example, randperm(s,6) might be [2 4 5 6 1 3]. randperm(s,n) uses random values drawn from the random number stream s.
betarnd (贝塔分布)
贝塔分布是一个作为伯努利分布和二项式分布的共轭先验分布的密度函数
Syntax
R = betarnd(A,B)
R = betarnd(A,B,m,n,...)
R = betarnd(A,B,[m,n,...])
Description
R = betarnd(A,B) generates random numbers from the beta distribution with parameters specified by A and B. A and B can be vectors, matrices, or multidimensional arrays that have the same size, which is also the size of R. A scalar input for A or B is expanded to a constant array with the same dimensions as the other input.
R = betarnd(A,B,m,n,...) or R = betarnd(A,B,[m,n,...]) generates an m-by-n-by-... array containing random numbers from the beta distribution with parameters A and B. A and B can each be scalars or arrays of the same size as R.
Examples
a = [1 1;2 2];
b = [1 2;1 2];
r = betarnd(a,b)
r =
0.6987 0.6139
0.9102 0.8067
r = betarnd(10,10,[1 5])
r =
0.5974 0.4777 0.5538 0.5465 0.6327
r = betarnd(4,2,2,3)
r =
0.3943 0.6101 0.5768
0.5990 0.2760 0.5474
Binornd (二项式分布)
二项分布(binomial distribution)就是对这类只具有两种互斥结果的离散型随机事件的规律性进行描述的一种概率分布。
Syntax
R = binornd(N,P)
R = binornd(N,P,m,n,...)
R = binornd(N,P,[m,n,...])
Description
R = binornd(N,P) generates random numbers from the binomial distribution with parameters specified by the number of trials, N, and probability of success for each trial, P. N and P can be vectors, matrices, or multidimensional arrays that have the same size, which is also the size of R. A scalar input for N or P is expanded to a constant array with the same dimensions as the other input.
R = binornd(N,P,m,n,...) or R = binornd(N,P,[m,n,...]) generates an m-by-n-by-... array containing random numbers from the binomial distribution with parameters N and P. N and P can each be scalars or arrays of the same size as R.
Algorithm
The binornd function uses the direct method using the definition of the binomial distribution as a sum of Bernoulli random variables.
Examples
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
r3 = binornd(n,1./n,1,6)
r3 =
0 1 1 1 0 3
chi2rnd (卡方分布)
若n个相互独立的随机变量ξ₁、ξ₂、……、ξn ,均服从标准正态分布,则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为χ²分布
Syntax
R = chi2rnd(V)
R = chi2rnd(V,m,n,...)
R = chi2rnd(V,[m,n,...])
Description
R = chi2rnd(V) generates random numbers from the chi-square distribution with degrees of freedom parameters specified by V. V can be a vector, a matrix, or a multidimensional array. R is the same size as V.
R = chi2rnd(V,m,n,...) or R = chi2rnd(V,[m,n,...]) generates an m-by-n-by-... array containing random numbers from the chi-square distribution with degrees of freedom parameter V. V can be a scalar or an array of the same size as R.
Examples
Note that the first and third commands are the same, but are different from the second command.
r = chi2rnd(1:6)
r =
0.0037 3.0377 7.8142 0.9021 3.2019 9.0729
r = chi2rnd(6,[1 6])
r =
6.5249 2.6226 12.2497 3.0388 6.3133 5.0388
r = chi2rnd(1:6,1,6)
r =
0.7638 6.0955 0.8273 3.2506 1.5469 10.9197
Copularnd (连接函数分布)
Copula函数描述的是变量间的相关性,实际上是一类将联合分布函数与它们各自的边缘分布函数连接在一起的函数
Syntax
U = copularnd('Gaussian',rho,N)
U = copularnd('t',rho,NU,N)
U = copularnd('family',alpha,N)
Description
U = copularnd('Gaussian',rho,N) returns N random vectors generated from a Gaussian copula with linear correlation parameters rho. If rho is a p-by-p correlation matrix, U is an n-by-p matrix. If rho is a scalar correlation coefficient, copularnd generates U from a bivariate Gaussian copula. Each column of U is a sample from a Uniform(0,1) marginal distribution.
U = copularnd('t',rho,NU,N) returns N random vectors generated from a t copula with linear correlation parameters rho and degrees of freedom NU. If rho is a p-by-p correlation matrix, U is an n-by-p matrix. If rho is a scalar correlation coefficient, copularnd generates U from a bivariate t copula. Each column of U is a sample from a Uniform(0,1) marginal distribution.
U = copularnd('family',alpha,N) returns N random vectors generated from the bivariate Archimedean copula determined by family, with scalar parameter alpha. family is Clayton, Frank, or Gumbel. U is an n-by-2 matrix. Each column of U is a sample from a Uniform(0,1) marginal distribution.
Examples
Determine the linear correlation parameter corresponding to a bivariate Gaussian copula having a rank correlation of -0.5.
tau = -0.5
rho = copulaparam('gaussian',tau)
rho =
-0.7071
% Generate dependent beta random values using that copula
u = copularnd('gaussian',rho,100);
b = betainv(u,2,2);
% Verify that the sample has a rank correlation
% approximately equal to tau
tau_sample = corr(b,'type','kendall')
tau_sample =
1.0000 -0.4537
-0.4537 1.0000
Gamrnd (伽马分布)
伽玛分布(Gamma distribution)是统计学的一种连续概率函数。Gamma分布中的参数α,称为形状参数(shape parameter),β称为尺度参数(scale parameter)。
Syntax
R = gamrnd(A,B)
R = gamrnd(A,B,m,n,...)
R = gamrnd(A,B,[m,n,...])
Description
R = gamrnd(A,B) generates random numbers from the gamma distribution with shape parameters in A and scale parameters in B. A and B can be vectors, matrices, or multidimensional arrays that all have the same size. A scalar input for A or B is expanded to a constant array with the same dimensions as the other input.
R = gamrnd(A,B,m,n,...) or R = gamrnd(A,B,[m,n,...]) generates an m-by-n-by-... array containing random numbers from the gamma distribution with parameters A and B. A and B can each be scalars or arrays of the same size as R.
Examples
n1 = gamrnd(1:5,6:10)
n1 =
9.1132 12.8431 24.8025 38.5960 106.4164
n2 = gamrnd(5,10,[1 5])
n2 =
30.9486 33.5667 33.6837 55.2014 46.8265
n3 = gamrnd(2:6,3,1,5)
n3 =
12.8715 11.3068 3.0982 15.6012 21.6739
Frnd (F分布,两个卡方分布的自由度)
F分布定义为:设X、Y为两个独立的随机变量,X服从自由度为k1的卡方分布,Y服从自由度为k2的卡方分布,这2 个独立的卡方分布被各自的自由度除以后的比率这一统计量的分布。即: 上式F服从第一自由度为k1,第二自由度为k2的F分布
Syntax
R = frnd(V1,V2)
R = frnd(V1,V2,m,n,...)
R = frnd(V1,V2,[m,n,...])
Description
R = frnd(V1,V2) generates random numbers from the F distribution with numerator degrees of freedom V1 and denominator degrees of freedom V2. V1 and V2 can be vectors, matrices, or multidimensional arrays that all have the same size. A scalar input for V1 or V2 is expanded to a constant array with the same dimensions as the other input.
R = frnd(V1,V2,m,n,...) or R = frnd(V1,V2,[m,n,...]) generates an m-by-n-by-... array containing random numbers from the F distribution with parameters V1 and V2. V1 and V2 can each be scalars or arrays of the same size as R.
Examples
n1 = frnd(1:6,1:6)
n1 =
0.0022 0.3121 3.0528 0.3189 0.2715 0.9539
n2 = frnd(2,2,[2 3])
n2 =
0.3186 0.9727 3.0268
0.2052 148.5816 0.2191
n3 = frnd([1 2 3;4 5 6],1,2,3)
n3 =
0.6233 0.2322 31.5458
2.5848 0.2121 4.4955
Geornd (几何分布)
几何分布是离散型概率分布。其中一种定义为:在n次伯努利试验中,试验k次才得到第一次成功的机率。详细的说,是:前k-1次皆失败,第k次成功的概率。
Syntax
R = geornd(P)
R = geornd(P,m,n,...)
R = geornd(P,[m,n,...])
Description
R = geornd(P) generates geometric random numbers with probability parameter P. P can be a vector, a matrix, or a multidimensional array. The size of R is the size of P. The geometric distribution is useful when you want to model the number of successive failures preceding a success, where the probability of success in any given trial is the constant P. The parameters in P must lie in the interval [0 1].
R = geornd(P,m,n,...) or R = geornd(P,[m,n,...]) generates an m-by-n-by-... array containing random numbers from the geometric distribution with probability parameter P. P can be a scalar or an array of the same size as R.
Examples
r1 = geornd(1 ./ 2.^(1:6))
r1 =
2 10 2 5 2 60
r2 = geornd(0.01,[1 5])
r2 =
65 18 334 291 63
r3 = geornd(0.5,1,6)
r3 =
0 7 1 3 1 0
Poissrnd (泊松分布)
泊松分布适合于描述单位时间内随机事件发生的次数。泊松分布的期望和方差均为λ。
Syntax
R = poissrnd(lambda)
R = poissrnd(lambda,m,n,...)
R = poissrnd(lambda,[m,n,...])
Description
R = poissrnd(lambda) generates random numbers from the Poisson distribution with mean parameter lambda. lambda can be a vector, a matrix, or a multidimensional array. The size of R is the size of lambda.
R = poissrnd(lambda,m,n,...) or R = poissrnd(lambda,[m,n,...]) generates an m-by-n-by-... array. The lambda parameter can be a scalar or an array of the same size as R.
Examples
Generate a random sample of 10 pseudo-observations from a Poisson distribution with λ = 2.
lambda = 2;
random_sample1 = poissrnd(lambda,1,10)
random_sample1 =
1 0 1 2 1 3 4 2 0 0
random_sample2 = poissrnd(lambda,[1 10])
random_sample2 =
1 1 1 5 0 3 2 2 3 4
random_sample3 = poissrnd(lambda(ones(1,10)))
random_sample3 =
3 2 1 1 0 0 4 0 2 0
random
随机分布函数
Syntax
Y = random(name,A)
Y = random(name,A,B)
Y = random(name,A,B,C)
Y = random(...,m,n,...)
Y = random(...,[m,n,...])
Description
Y = random(name,A) where name is the name of a distribution that takes a single parameter, returns random numbers Y from the one-parameter family of distributions specified by name. Parameter values for the distribution are given in A.
Y is the same size as A.
Y = random(name,A,B) returns random numbers Y from a two-parameter family of distributions. Parameter values for the distribution are given in A and B.
If A and B are arrays, they must be the same size. If either A or B are scalars, they are expanded to constant matrices of the same size.
Y = random(name,A,B,C) returns random numbers Y from a three-parameter family of distributions. Parameter values for the distribution are given in A, B, and C.
If A, B, and C are arrays, they must be the same size. If any of A, B, or C are scalars, they are expanded to constant matrices of the same size.
Y = random(...,m,n,...) or Y = random(...,[m,n,...]) returns an m-by-n-by... matrix of random numbers.
If any of A, B, or C are arrays, then the specified dimensions must match the common dimensions of A, B, and C after any necessary scalar expansion.
The following table denotes the acceptable strings for name, as well as the parameters for that distribution
Examples
Generate a 2-by-4 array of random values from the normal distribution with mean 0 and standard deviation 1:
x1 = random('Normal',0,1,2,4)
x1 =
1.1650 0.0751 -0.6965 0.0591
0.6268 0.3516 1.6961 1.7971
The order of the parameters is the same as for normrnd.
Generate a single random value from Poisson distributions with rate parameters 1, 2, ..., 6, respectively:
x2 = random('Poisson',1:6,1,6)
x2 = 0 0 1 2 5 7
展开阅读全文