# random
随机数
函数库: TyStatistics
# 语法
# 说明
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
重置随机数生成器
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
根据现有数组克隆大小
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
生成多个随机数
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 - 概率分布
概率分布对象
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 - 随机数
标量值 | 标量值数组
如果您指定分布参数 A、B、C 或 D,则 R 中的每个元素均是从 A、B、C 和 D 中对应元素所指定的分布中生成的随机数。
# 替代功能
random 是泛型函数,它按概率分布对象 pd 接受分布。使用分布特有的函数更快,例如正态分布特有的 normrnd,二项分布特有的 binornd。