AnyMath 文档

兰德恩

正态分布的随机数。

库::`工程师`

语法

函数调用

* <参数:X>>=randn() — 返回取自标准正态分布的随机标量值。

* <参数:X>>=randn(<参数:n>>) — 返回大小矩阵 [参数:n]×[参数:n] 正态分布的随机数。

* [参数:X]=randn(<参数:sz1-n>>) — 返回大小为随机数的数组 sz1×…​×szN,在哪里 [参数:sz1-N] 表示每个维度的大小。 例如, 兰德(3,4) 返回大小的矩阵 3×4.

* [参数:X]=randn(<参数:sz>>) — 返回一个随机数数组,其中是一个大小的向量 [参数:sz] 定义 尺寸(X). 例如, 兰德([3,4]) 返回大小矩阵 3×4.

* <参数:X>>=randn(___,[参数:typename]) — 返回类型的随机数的数组 [参数:类型名称]. 输入参数 [参数:类型名称] 也许吧 "Float32""浮64". 您可以使用前面示例中提供的输入参数的任何组合。

* <参数:X>>=randn(___,如=<参数:p>>) — 返回一个类似于 [参数:p],即具有相同的数据类型和数字类型(实数或复数)作为 [参数:p]. 您可以指定 [参数:类型名称],或 但不是两者都在同一时间。

* [参数:X]=randn(<参数:s>>,___) — 从随机数流生成数字 [参数:s] 而不是默认的全局流。 要创建流,请使用 *RandStream*. 您可以指定 [参数:s],然后是前面的例子中提出的输入参数的任何组合。

争论

输入参数

# *n*是 方阵的大小

+ 整数值

Details

方阵的大小,设为整数。

如果 n 同样 0 然后 [参数:X] -一个空矩阵。

数据类型

漂浮物32, 漂浮64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64</无翻译>

# *sz1,。..,szN* — 每个维度的大小(作为单独的参数)

+ 整数值

Details

每个维度的大小,设置为整数值的单独参数。

*如果任何维度的大小为 0 然后 [参数:X] -一个空数组。 *超越第二维度,功能 *兰德* 忽略所有后续尺寸测量 1. 例如, 兰德(3,1,1) 创建大小的随机数的向量 3×1.

数据类型

漂浮物32, 漂浮64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64</无翻译>

# *sz* — 每个维度的大小(以行向量的形式)

+ 整数值

Details

每个维度的大小(指定为向量)是一串整数值。

*如果任何维度的大小为 0 然后 [参数:X] -一个空数组。 *超越第二维度 *兰德* 忽略所有带大小的后续测量 1. 例如, 兰德([311]) 创建大小的随机数的向量 3×1.

数据类型

漂浮物32, 漂浮64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64</无翻译>

# *类型名称* — 要创建的数据类型(类)

+ "浮64" (默认情况下)| "Float32"

Details

要创建的数据类型(类)可以指定为 "浮64", "Float32" 或者作为支持的另一个类的名称 *兰德*.

# *s* — 随机数流

+ RandStream对象

Details

指定为对象的随机数流 *RandStream*.

# *p*是 正在创建的数组的原型

+ 数字数组

Details

正在创建的数组的原型,指定为数字数组。

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

输出参数

# *X*是 输出数组

+ 标量,标量 | 向量资料 | 矩阵 | 多维数组

Details

作为标量、矢量、矩阵或多维数组返回的输出数组。

例子:

随机数矩阵

Details

生成矩阵 5×5 正态分布的随机数。

import EngeeDSP.Functions: randn

r = randn(5)
5×5 Matrix{Float64}:
  2.97447   -0.106555   2.02373    0.296171   0.733738
 -0.622585  -0.215161   0.777789   1.20078    0.120332
  1.9203     0.47349   -0.548902   1.09017    1.13633
  0.961149   1.36564   -0.126011  -0.358703  -0.686773
 -0.557803  -1.6378     0.29958   -0.129928   0.471683

二维正态随机数分布

Details

我们将根据具有给定期望向量和协方差矩阵的二维正态分布生成值。

import EngeeDSP.Functions: randn
using LinearAlgebra

mu = [1 2]
sigma = [1 0.5; 0.5 2]
R = cholesky(sigma).U
z = repeat(mu, 10, 1) + randn(10, 2) &ast; R
10×2 Matrix{Float64}:
  1.6715     3.51099
 -0.207487  -0.121175
  1.71724    0.944637
  2.63024    1.74425
  1.48889   -1.65047
  2.03469    4.42014
  1.72689    2.79363
  0.696559   0.849603
  1.29387    3.95967
  0.212717  -0.657765

随机数的三维数组

Details

创建大小的随机数的数组 3×2×3.

import EngeeDSP.Functions: randn

X = randn([3,2,3])
3×2×3 Array{Float64, 3}:
[:, :, 1] =
 -0.102242   0.312859
 -0.241447  -0.86488
  0.319207  -0.0300513

[:, :, 2] =
 -0.164879   1.10927
  0.627707  -0.863653
  1.09327    0.0773591

[:, :, 3] =
 -1.21412      1.53263
 -1.1135      -0.769666
 -0.00684933   0.371379

指定随机数的数据类型

Details

创建大小的随机数的向量 1×4,其元素具有单一精度。

import EngeeDSP.Functions: randn

r = randn(1,4,"Float32")
1×4 Matrix{Float32}:
 -0.225584  1.11736  -1.08906  0.0325575
typeof(r)
Matrix{Float32}

大小由现有数组决定

Details

让我们创建一个与现有数组大小相同的正态分布随机数矩阵。

import EngeeDSP.Functions: randn

A = [3 2; -2 1]
sz = size(A)
X = randn(sz...)
2×2 Matrix{Float64}:
 -0.615602  -0.192419
  0.748077   0.88861

将前面的两行代码合并为一行是一种常见的做法。

X = randn(size(A)...);

数据的大小和类型由现有数组决定

Details

创建矩阵 2×2 单精度随机数。

p = Float32[3 2; -2 1];

创建一个大小和数据类型相同的随机数数组 p.

X = randn(size(p)...,like=p)
2×2 Matrix{Float32}:
 0.197811  -0.804466
 1.5877     0.696624
typeof(X)
Matrix{Float32}

此外

标准实数和标准复正态分布

Details

生成随机实数时,函数 *兰德* 生成对应于标准正态分布的数据。:

这里 -具有数学期望的随机实值 和方差 .

生成随机复数时,例如,使用命令时 兰德(。..,像=1im),功能 *兰德* 生成对应于标准复数正态分布的数据。:

这里 是一个随机复数,其实部和虚部是具有数学期望的独立正态分布随机变量 和方差 .

伪随机数发生器

Details

在数字发生器的核心 *兰德* 有一个伪随机生成器,它创建了一个看起来随机的确定性数字序列。 如果初始数字和生成器的确定性算法已知,则这些数字是可预测的。 虽然生成的数字不是真正的随机性,但它们通过了各种随机性统计测试,满足了独立性和相同分布的条件,证明了"伪随机"的名称。"

建议

函数生成的数字序列 *兰德*,由通用的内部设置决定 伪随机数生成器底层函数 *兰德*, *兰迪**兰德*.