random

Random numbers

Syntax

R = random('name',A)
R = random('name',A,B)
R = random('name',A,B,C)
R = random('name',A,B,C,D)
R = random(pd)
R = random(___,sz1,...,szN)
R = random(___,[sz1,...,szN])

Description

example

R = random('name',A) returns a random number from the one-parameter distribution family specified by 'name' and the distribution parameter A.

example

R = random('name',A,B) returns a random number from the two-parameter distribution family specified by 'name' and the distribution parameters A and B.

R = random('name',A,B,C) returns a random number from the three-parameter distribution family specified by 'name' and the distribution parameters A, B, and C.

R = random('name',A,B,C,D) returns a random number from the four-parameter distribution family specified by 'name' and the distribution parameters A, B, C, and D.

example

R = random(pd) returns a random number from the probability distribution object pd.

example

R = random(___,sz1,...,szN) or R = random(___,[sz1,...,szN]) generates a sz1-by-⋯-by-szN array of random numbers from the specified probability distribution using input arguments from any of the previous syntaxes.

Examples

collapse all

Create a standard normal probability distribution object.

pd = makedist('Normal')
pd = 
  NormalDistribution

  Normal distribution
       mu = 0
    sigma = 1

Generate one random number from the distribution.

rng('default') % For reproducibility
r1 = random(pd)
r1 = 0.5377

Alternatively, you can generate a standard normal random number by specifying its name and parameters.

r2 = random('Normal',0,1)
r2 = 1.8339

Save the current state of the random number generator. Then generate a random number from the Poisson distribution with rate parameter 5.

s = rng;
r = random('Poisson',5)
r = 5

Restore the state of the random number generator to s, and then create a new random number. The value is the same as before.

rng(s);
r1 = random('Poisson',5)
r1 = 5

Create a matrix of random numbers with the same size as an existing array. Use the stable distribution with shape parameters 2 and 0, scale parameter 1, and location parameter 0.

A = [3 2; -2 1];
sz = size(A);
R = random('Stable',2,0,1,0,sz)
R = 2×2

    0.7604   -3.1945
    2.5935    1.2193

You can combine the previous two lines of code into a single line.

R = random('Stable',2,0,1,0,size(A))
R = 2×2

    0.4508   -0.6132
   -1.8494    0.4845

Create a Weibull probability distribution object using the default parameter values.

pd = makedist('Weibull')
pd = 
  WeibullDistribution

  Weibull distribution
    A = 1
    B = 1

Generate random numbers from the distribution.

rng('default')  % For reproducibility
r = random(pd,10000,1);

Construct a histogram using 100 bins with a Weibull distribution fit.

histfit(r,100,'weibull')

Create a standard normal probability distribution object.

pd = makedist('Normal')
pd = 
  NormalDistribution

  Normal distribution
       mu = 0
    sigma = 1

Generate a 2-by-3-by-2 array of random numbers from the distribution.

r = random(pd,[2,3,2])
r = 
r(:,:,1) =

    0.5377   -2.2588    0.3188
    1.8339    0.8622   -1.3077


r(:,:,2) =

   -0.4336    3.5784   -1.3499
    0.3426    2.7694    3.0349

Input Arguments

collapse all

Probability distribution name, specified as one of the probability distribution names in this table.

'name'DistributionInput Parameter AInput Parameter BInput Parameter CInput Parameter D
'Beta'Beta Distributiona first shape parameterb second shape parameter
'Binomial'Binomial Distributionn number of trialsp probability of success for each trial
'BirnbaumSaunders'Birnbaum-Saunders Distributionβ scale parameterγ shape parameter
'Burr'Burr Type XII Distributionα scale parameterc first shape parameterk second shape parameter
'Chisquare'Chi-Square Distributionν degrees of freedom
'Exponential'Exponential Distributionμ mean
'Extreme Value'Extreme Value Distributionμ location parameterσ scale parameter
'F'F Distributionν1 numerator degrees of freedomν2 denominator degrees of freedom
'Gamma'Gamma Distributiona shape parameterb scale parameter
'Generalized Extreme Value'Generalized Extreme Value Distributionk shape parameterσ scale parameterμ location parameter
'Generalized Pareto'Generalized Pareto Distributionk tail index (shape) parameterσ scale parameterμ threshold (location) parameter
'Geometric'Geometric Distributionp probability parameter
'HalfNormal'Half-Normal Distributionμ location parameterσ scale parameter
'Hypergeometric'Hypergeometric Distributionm size of the populationk number of items with the desired characteristic in the populationn number of samples drawn
'InverseGaussian'Inverse Gaussian Distributionμ scale parameterλ shape parameter
'Logistic'Logistic Distributionμ meanσ scale parameter
'LogLogistic'Loglogistic Distributionμ mean of logarithmic valuesσ scale parameter of logarithmic values
'Lognormal'Lognormal Distributionμ mean of logarithmic valuesσ standard deviation of logarithmic values
'Nakagami'Nakagami Distributionμ shape parameterω scale parameter
'Negative Binomial'Negative Binomial Distributionr number of successesp probability of success in a single trial
'Noncentral F'Noncentral F Distributionν1 numerator degrees of freedomν2 denominator degrees of freedomδ noncentrality parameter
'Noncentral t'Noncentral t Distributionν degrees of freedomδ noncentrality parameter
'Noncentral Chi-square'Noncentral Chi-Square Distributionν degrees of freedomδ noncentrality parameter
'Normal'Normal Distributionμ mean σ standard deviation
'Poisson'Poisson Distributionλ mean
'Rayleigh'Rayleigh Distributionb scale parameter
'Rician'Rician Distributions noncentrality parameterσ scale parameter
'Stable'Stable Distributionα first shape parameterβ second shape parameterγ scale parameterδ location parameter
'T'Student's t Distributionν degrees of freedom
'tLocationScale't Location-Scale Distributionμ location parameterσ scale parameterν shape parameter
'Uniform'Uniform Distribution (Continuous)a lower endpoint (minimum)b upper endpoint (maximum)
'Discrete Uniform'Uniform Distribution (Discrete)n maximum observable value
'Weibull'Weibull Distributiona scale parameterb shape parameter

Example: 'Normal'

First probability distribution parameter, specified as a scalar value or an array of scalar values.

If one or more of the input arguments A, B, C, and D are arrays, then the array sizes must be the same. In this case, random expands each scalar input into a constant array of the same size as the array inputs. See 'name' for the definitions of A, B, C, and D for each distribution.

Data Types: single | double

Second probability distribution parameter, specified as a scalar value or an array of scalar values.

If one or more of the input arguments A, B, C, and D are arrays, then the array sizes must be the same. In this case, random expands each scalar input into a constant array of the same size as the array inputs. See 'name' for the definitions of A, B, C, and D for each distribution.

Data Types: single | double

Third probability distribution parameter, specified as a scalar value or an array of scalar values.

If one or more of the input arguments A, B, C, and D are arrays, then the array sizes must be the same. In this case, random expands each scalar input into a constant array of the same size as the array inputs. See 'name' for the definitions of A, B, C, and D for each distribution.

Data Types: single | double

Fourth probability distribution parameter, specified as a scalar value or an array of scalar values.

If one or more of the input arguments A, B, C, and D are arrays, then the array sizes must be the same. In this case, random expands each scalar input into a constant array of the same size as the array inputs. See 'name' for the definitions of A, B, C, and D for each distribution.

Data Types: single | double

Probability distribution, specified as a probability distribution object created with a function or app in this table.

Function or AppDescription
makedistCreate a probability distribution object using specified parameter values.
fitdistFit a probability distribution object to sample data.
Distribution FitterFit a probability distribution to sample data using the interactive Distribution Fitter app and export the fitted object to the workspace.
paretotailsCreate a piecewise distribution object that has generalized Pareto distributions in the tails.

Size of each dimension, specified as integer values or a row vector of integer values. For example, specifying 5,3,2 or [5,3,2] generates a 5-by-3-by-2 array of random numbers from the specified probability distribution.

If one or more of the input arguments A, B, C, and D are arrays, then the specified dimensions sz1,...,szN must match the common dimensions of A, B, C, and D after any necessary scalar expansion. The default values of sz1,...,szN are the common dimensions.

  • If you specify a single value sz1, then R is a square matrix of size sz1.

  • If the size of any dimension is 0 or negative, then R is an empty array.

  • Beyond the second dimension, random ignores trailing dimensions with a size of 1. For example, random(3,1,1,1) produces a 3-by-1 vector of random numbers.

Data Types: single | double

Output Arguments

collapse all

Random number generated from the specified probability distribution, returned as a scalar value or an array of scalar values with the dimensions specified by sz1,...,szN.

If you specify distribution parameters A, B, C, or D, then each element in R is the random number generated from the distribution specified by the corresponding elements in A, B, C, and D.

Alternative Functionality

  • random is a generic function that accepts either a distribution by its name 'name' or a probability distribution object pd. It is faster to use a distribution-specific function, such as randn and normrnd for the normal distribution and binornd for the binomial distribution. For a list of distribution-specific functions, see Supported Distributions.

  • To generate random numbers interactively, use randtool, a random number generation user interface.

Extended Capabilities

Introduced before R2006a