怎么在matlab中生成一个随机的强联通图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在matlab中生成一个随机的强联通图相关的知识,希望对你有一定的参考价值。
参考技术A 系统产生一个0到1的实随机数, 然后乘以所设的最大的可能随机数,然后就得到0到10,100,..,等等的实随机数; 整数随机数就是这些实随机数取整后得到的. rand() (0,1)均匀分布随机矩阵 randn() 标准正态分布矩阵 randint(c,d [a ,b]) 随机整数矩阵如何在Matlab中生成具有对数正态分布和指定几何平均数和几何标准差的随机数
【中文标题】如何在Matlab中生成具有对数正态分布和指定几何平均数和几何标准差的随机数【英文标题】:how to generate random numbers with lognormal distribution and with specified geometric mean and geometric standard deviationin Matlab 【发布时间】:2011-12-02 06:01:10 【问题描述】:我想生成一些具有指定几何平均值 (GM) 和几何标准差 (GSD) 的对数正态分布的随机数,例如 GM=10 和 GSD=2.5。 我如何在 Matlab 中做到这一点?我查找了 Matlab 的帮助并找到了这个链接,但我想使用我的初始输入作为 GM 和 GSD,而不是均值和方差。
http://www.mathworks.com/help/toolbox/stats/lognrnd.html
【问题讨论】:
您可能会在本网站的数学版here 获得更好的受众。 或统计版本 [这里](stats.stackexchange.com)。 【参考方案1】:Wikipedia 表示对数正态分布的几何平均值为exp(µ)
,几何标准差为exp(sigma)
。所以就这样做吧:
rn = lognrnd(log(GM), log(GSD));
【讨论】:
【参考方案2】:难写,因为 *** 没有数学标记(可能是下面的一些 LaTeX 错误),但是如果我们将 $m_a$ 和 $m_g$ 定义为算术和几何平均值,并将 $s_a$ 和 $s_g$ 定义为算术和几何标准差:
$m_a = exp(\mu + \sigma^2/2),$
$m_g = m_a exp(-\sigma^2/2),$
和
$s_g = exp(\sigma) \sigma = log(s_g)$
如果 $m_g = 10$,则 $m_a = 10/\exp(-\sigma^2/2) = 10/\exp(-\log(s_g)^2/2)$,并且
$s_g = (\exp(\sigma^2)-1)\exp(\mu \s_g = \exp(\mu + \sigma^2/2)\sqrt\exp(\sigma^2 - 1) 。 $
所以:
GM = 10; GSD = 2.5;
M = 10/exp(-log(GSD)^2/2);
V = exp(log(GM)+log(GSD)^2/2)*sqrt(exp(log(GSD)^2)-1);
MU = log(M^2 / sqrt(V+M^2))
SIGMA = sqrt(log(V/M^2 + 1))
>> lognrnd(MU, SIGMA, 10, 1)
ans =
18.5128
15.9902
10.3143
13.0549
16.0934
38.5006
30.9571
10.1976
33.2538
17.8427
【讨论】:
注意lognrandn
中的参数mu
和sigma
是相关正态分布的算术平均值和标准差(不是生成的对数正态分布)。特别是,使用建议的方法生成的分布不会有 10 作为几何平均值(从 10 个样本中观察,没有一个小于 10)。
感谢 tdc 的回答。我检查了你的方法生成的数字,GM确实大于10。
啊抱歉 - 我会说 matlab 的参数化毫无帮助!以上是关于怎么在matlab中生成一个随机的强联通图的主要内容,如果未能解决你的问题,请参考以下文章
HDU 2767-Proving Equivalences(强联通+缩点)