![]() |
1
34
这个 page at Wolfram MathWorld 讨论如何从均匀分布(这是大多数随机数生成器提供的)中获得幂律分布。 简短的回答(以上链接的推导):
哪里 Y 是一个统一变量, n 是配电电源, X0 和 X1 定义分布的范围,以及 X 是幂律分布变量。 |
![]() |
2
18
如果你知道你想要的分布(称为概率分布函数(pdf))并对其进行了适当的规范化,你可以将其集成以获得累积分布函数(cdf),然后反转cdf(如果可能),以从统一的
因此,首先要定义所需的分布。
(对于[0,1]中的x),然后整合以给出
如果这个可以倒过来
所以叫
这个结果被称为抽样的基本定理。这是一个麻烦,因为规范化要求和需要分析性地反转函数。 或者,您可以使用拒绝技术:在所需范围内均匀地抛出一个数字,然后抛出另一个数字,并在第一次抛出所不确定的位置与PDF进行比较。如果第二次抛出超过PDF,则拒绝。对于具有很多低概率区域的pdf,像那些具有长尾巴的pdf,往往效率低下。 中间方法涉及到用蛮力反转CDF:将CDF存储为查找表,然后进行反向查找以获得结果。
这里真正的臭味就是这么简单
|
![]() |
3
3
我不能评论产生幂律分布所需的数学(其他帖子有建议),但我建议您熟悉Tr1 C++标准库的随机数设施。
包括的分发预设为:
当你定义你的功率定律分布时,你应该能够用现有的发电机和引擎来连接它。这本书
C++标准库扩展
彼得·贝克尔写了一篇伟大的篇章
Here is an article 关于如何创建其他分布(以cauchy、chi squared、student t和snedecor f为例) |
![]() |
4
3
我只是想进行一个实际的模拟,作为(正确的)被接受答案的补充。虽然在R语言中,代码是如此简单以至于是(伪)伪代码。
两者之间的一个微小差别
Wolfram MathWorld formula
在公认的答案和其他,也许更常见的,方程是事实上
幂律指数
所以这里是:
或按对数比例绘制:
以下是数据摘要:
|
![]() |
ecology · 基于R中随机生成数集的子集列 2 年前 |
![]() |
Alan Jones · 使用random从列表创建动态列表 2 年前 |
![]() |
breking bed · 单击按钮时如何随机选择唯一编号 2 年前 |
![]() |
Carrot Man · 如何让熊猫数据框随机填充1和0? 3 年前 |
![]() |
Justin Arnold · 范围内的随机数不是随机数 3 年前 |
![]() |
Menna Magdy · 如何使用非模型字段进行过滤? 3 年前 |