伪随机数字是由确定性算法生成的。它们是“随机”的,因为平均而言,它们通过了有关其分布和相关性的统计测试。它们不同于真正的随机数,因为它们是由算法生成的,而不是真正的随机过程。
随机数生成器(rng)类似于MATLAB中的那些 有关从受支持的发行版生成随机数的GUI的更多信息,请参见金宝app 生成伪随机数的方法通常从均匀随机数开始,如MATLAB 直接方法直接使用分布的定义。
例如,考虑二项式随机数,一个二项式随机数是 这个函数是一个使用直接方法的二项式RNG的简单实现:
结束结束 例如:
的 您可以很容易地将前面的方法转换为带参数的泊松分布的随机数生成器 的 小值的等待时间法 由Ahrens和Dieter提出的一种方法,用于更大的 反演方法基于连续累积分布函数(CDF)在区间内均匀分布的观测 例如,下面的代码从特定对象生成随机数 比较生成随机数的分布与指定指数的pdf。
反演方法也适用于离散分布。生成随机数 例如,下面的函数实现了概率质量矢量离散分布的反演方法 使用该函数从任何离散分布中生成随机数。
或者,您可以使用 绘制生成的随机数的直方图,然后确认分布符合指定的pmf值。
某些分布的函数形式使得使用直接或反演方法生成随机数变得困难或耗时。在这些情况下,接受-拒绝方法提供了一种替代方法。
验收-拒收方法从统一随机数开始,但需要额外的随机数生成器。如果您的目标是使用pdf从连续分布生成随机数 RNG的连续接受-拒绝过程如下:
选择一个密度 找到一个常数 生成一个统一的随机数 生成一个随机数 如果 为了提高效率,需要一种“廉价”的方法来生成随机数 以下函数实现了一种接受-拒绝方法,用于从pdf生成随机数 例如,函数 pdf 的 接受-拒绝方法也适用于离散分布。在这种情况下,目标是从具有概率质量的分布中生成随机数 选择一个密度 找到一个常数 生成一个统一的随机数 生成一个随机数 如果常见伪随机数生成方法
兰德生产函数。本节描述的方法详细介绍了如何从其他分布生成随机数。
直接法
作用X = directbinornd(N,p,m, N)
rng (
比诺恩德函数使用了一种修正的直接法,基于二项随机变量定义为伯努利随机变量的和。
泊松函数实际上使用了两种直接方法:
反演方法
兰德:
rng (
numbins=50;h=直方图(X,numbins,
作用X = disteinvrnd (p,m,n)
P = [0.1 0.2 0.3 0.2 0.1 0.1];
离散化函数生成离散随机数。
X =离散(rand(1e4,1),[0 cussum (p)]));
直方图(分类(X),
验收和拒收方法
作用X = 0 (f,g,grnd,c,m,n)
兰德和
解释生成随机数
f = @ x (x)。* exp (- (x ^ 2) / 2);g = @ (x) exp (- x);接地= @ ()exprnd (1);rng (
raylrnd:
Y = raylrnd (1,1 e4, 1);直方图(X)
randn.
相关话题