Python:如何创建具有给定分布的距离网络?

时间:2017-09-04 12:59:31

标签: python networking distribution euclidean-distance

我有N个代理人在(截断的Levy)分布后放置在网格n x n

px = (r + r0)**(-beta)*exp(-r/k)

每个代理都有两个最喜欢的单元格:homeworkpx是每个代理从homework移动距离的概率r

def returnLevy(r, beta):
    r0 = 100
    k = 1500
    px = (r + r0)**(-beta)*exp(-r/k)
    return px

我计算了网格中所有单元格之间的距离,所以

allDistances.head(5):

    distances   cell_a  cell_b  
0   1.322959      0       1 
1   0.717737      0       2 
2   0.454170      0       3 
3   0.321495      0       4 
4   0.454248      0       5 

我想知道是否有办法在上述发行版之后随机为每个座席分配rhome距离work。最后,我想有一个数据框:

agentsCells 

    distance    home    work    
0   1.322959     320    1089    
1   0.717737      4      765    
2   0.454170     2100    388    

1 个答案:

答案 0 :(得分:0)

您可以使用pdf定义自己的自定义scipy,并使用它来计算概率密度的有用指标

import scipy.stats as st

class LevyPDF(st.rv_continuous):
    def _pdf(self,r):
        r0 = 100
        k = 1500
        return (r + r0)**(-beta)*exp(-r/k) #Normalized over its range [minValue,maxValue]

my_cv = LevyPDF(a=minValue, b=maxValue, name='LevyPDF')

要随机绘制值,您必须首先计算累积分布函数(cdf),然后将其反转以获得icdf。现在可以使用pdf后面的随机值绘制(您可以找到更多详细信息here)。 如果您计算了cdf,则可以使用my_cv.cdf()的数字结果检查结果。