bec*_*cko 5 python random numpy distribution
如果我想采样截断的整数幂律,我可以在Python中使用什么函数?
也就是说,给定两个参数,a并且在跟随与之成比例的分布的范围内m生成随机整数.x[1,m)1/x^a
我一直在寻找numpy.random,但我没有找到这个分布.
AFAIK, neither NumPy nor Scipy defines this distribution for you. However, using SciPy it is easy to define your own discrete distribution function using scipy.rv_discrete:
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
def truncated_power_law(a, m):
x = np.arange(1, m+1, dtype='float')
pmf = 1/x**a
pmf /= pmf.sum()
return stats.rv_discrete(values=(range(1, m+1), pmf))
a, m = 2, 10
d = truncated_power_law(a=a, m=m)
N = 10**4
sample = d.rvs(size=N)
plt.hist(sample, bins=np.arange(m)+0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
1664 次 |
| 最近记录: |