2026a

# random


随机数

函数库: TyStatistics

# 语法

R = random(pd)

R = random(pd,sz1,...,szN)

R = random(pd,sz)

# 说明

R = random(pd) 从概率分布对象 pd 返回一个随机数。示例


R = random(pd,sz1,...,szN) 使用任何先前语法的输入参数从指定的概率分布生成随机数数组,其中 sz1,…,szN 表示每个维度的大小。示例


R = random(pd,sz) 使用任何先前语法的输入参数从指定的概率分布生成随机数数组,其中向量 sz 指定大小。示例

# 示例

使用分布对象生成一个随机数
创建正态分布对象并使用该对象生成一个随机数。

创建一个正态分布对象,平均 μ 等于 1,标准偏差 σ 等于 5。

using TyMath
using TyStatistics
mu = 1
sigma = 5
pd = Normal(mu,sigma)

生成随机数。

rng = MT19937ar(5489)
r = random(rng,pd)
r = 3.6883356977305
使用分布对象生成一个随机数

创建一个正态分布对象,并使用该对象生成一个随机数。

创建均值 μ 等于 1、标准差 σ 等于 5 的正态分布对象。

using TyMath
using TyStatistics
mu = 1;
sigma = 5;
pd = makedist("Normal",μ = mu,σ = sigma);

从该分布中生成一个随机数。

rng = MT19937ar(5489)
r = random(rng,pd)
r = 3.6883356977305
重置随机数生成器
从速率参数为 5 的泊松分布生成一个随机数。
using TyMath
using TyStatistics
pd = Poisson(5)
rng = MT19937ar(5489)
r = random(rng,pd)
r = 5.0

将随机数生成器的状态重置,然后创建一个新随机数。值与之前相同。

rng = MT19937ar(5489)
r = random(rng,pd)
r = 5.0
根据现有数组克隆大小
创建一个由随机数组成并且大小与一个现有数组相同的矩阵。使用形状参数为 2 和 0、尺度参数为 1、位置参数为 0 的稳定分布。
using TyMath
using TyStatistics
rng = MT19937ar(5489)
A = [3 2; -2 1]
sz = size(A)
pd = Stable(2,0,1,0)
R = random(rng,pd,sz)
2×2 Matrix{Float64}:
 0.760376  -3.19449
 2.59351    1.2193
A = [3 2; -2 1]
pd = Stable(2,0,1,0)
R = random(rng,pd,size(A))

可以将前两行代码合并为一行。

2×2 Matrix{Float64}:
  0.450802  -0.613192
 -1.84935    0.484544
生成多个随机数
使用默认参数值创建 Weibull 概率分布对象。
using TyMath
using TyStatistics
pd = Weibull()
Weibull{Float64}(α=1.0, θ=1.0)

从分布中生成随机数。

rng = MT19937ar(5489)
r = random(rng,pd,10000,1);

使用服从 Weibull 分布拟合的 100 个 bin 构造一个直方图。

histfit(r,100,Weibull)
生成随机数的多维数组
创建标准正态概率分布对象。
using TyMath
using TyStatistics
pd = Normal()
Normal{Float64}(μ=0.0, σ=1.0)

从分布中生成一个 2×3×2 随机数数组。

rng = MT19937ar(5489)
r = random(rng,pd,(2,3,2))
2×3×2 Array{Float64, 3}:
[:, :, 1] =
 0.537667  -2.25885    0.318765
 1.83389    0.862173  -1.30769

[:, :, 2] =
 -0.433592  3.5784   -1.34989
  0.342624  2.76944   3.03492

# 输入参数

pd - 概率分布
概率分布对象
概率分布,指定为下表中的概率分布对象之一。
分布对象 用于创建概率分布对象的函数
BetaDistribution Beta
BinomialDistribution Binomial
Chi-SquareDistribution Chisq
BirnbaumSaundersDistribution Birnbaum
BurrDistribution Burr
ExponentialDistribution Exponential
ExtremeValueDistribution ExtremeValue
GammaDistribution Gamma
GeneralizedExtremeValueDistribution GeneralizedExtremeValue
GeneralizedParetoDistribution GeneralizedPareto
HalfNormalDistribution HalfNormal
HypergeometricDistribution Hypergeometric
InverseGaussianDistribution InverseGaussian
LoglogisticDistribution Loglogistic
LognormalDistribution LogNormal
LoguniformDistribution Loguniform
KernelDistribution Kernel
NakagamiDistribution Nakagami
NegativeBinomialDistribution NegativeBinomial
NoncentralFDistribution NoncentralF
NoncentralTDistribution NoncentralT
NoncentralChi-SquareDistribution NoncentralChisq
NormalDistribution Normal
PoissonDistribution Poisson
RayleighDistribution Rayleigh
RicianDistribution Rician
StableDistribution Stable
tLocationScaleDistribution tLocationScaleDistribution
TriangularDistribution TriangularDist
Student t 分布 TDist
UniformDistribution Uniform
WeibullDistribution Weibull
sz1,...,szN - 每个维度的大小(作为单独的参数)
整数

每个维度的大小,指定为整数值。例如,指定 5,3,2 会根据指定的概率分布生成 5×3×2 的随机数数组。

如果一个或多个输入参数 A、B、C 和 D 是数组,则指定的维数 sz1,…,szN 必须在任何必要的标量扩展后与 A、B、C 和 D 的公共维数相匹配。sz1,…,szN 的默认值是公共维度。

  • 如果您指定单一值 sz1,则 R 是大小为 sz1×sz1 的方阵;

  • 如果任何维度的大小为0或负,则R是空数组;

  • 对于第二个维度以上的维度,random 会忽略大小为 1 的尾部维度。例如,指定 3,1,1,1 会生成由随机数组成的 3×1 向量。

示例: 5,3,2

数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128

sz - 每个维度的大小(作为行向量)
整数行向量

每个维度的大小,指定为整数值。例如,指定 5,3,2 会从指定的概率分布生成一个由随机数组成的 5×3×2 数组。

如果输入参数 A、B、C 和 D 中的一个或多个是数组,则在进行任何必要的标量扩展后,指定的维度 sz1,...,szN 必须与 A、B、C 和 D 的公共维度相匹配。sz1,...,szN 的默认值为公共维度。

  • 如果您指定单一值 [sz1],则 R 是大小为 sz1×sz1 的方阵;

  • 如果任一维度的大小是 0 或负数,则 R 是空数组;

  • 对于第二个维度以上的维度,random 会忽略大小为 1 的尾部维度。例如,指定 [3 1 1 1] 会生成由随机数组成的 3×1 向量。

示例: [5 3 2]

数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128

# 输出参数

R - 随机数
标量值 | 标量值数组
从指定的概率分布生成的随机数,以标量值或标量值数组的形式返回,其维度由 sz1,...,szN 或 sz 指定。

如果您指定分布参数 A、B、C 或 D,则 R 中的每个元素均是从 A、B、C 和 D 中对应元素所指定的分布中生成的随机数。

# 替代功能

random 是泛型函数,它按概率分布对象 pd 接受分布。使用分布特有的函数更快,例如正态分布特有的 normrnd,二项分布特有的 binornd。

# 另请参阅

cdf | pdf | quantile