0

我找到了这个生成 zipf 随机数的 python 代码,如何更改它以生成从最小概率(从 zipf 尾部)到最大概率的数字?

ZipfGenerator 类:

def __init__(self, n, alpha): 
    # Calculate Zeta values from 1 to n: 
    tmp = [1. / (math.pow(float(i), alpha)) for i in range(1, n+1)] 
    zeta = reduce(lambda sums, x: sums + [sums[-1] + x], tmp, [0]) 

    # Store the translation map: 
    self.distMap = [x / zeta[-1] for x in zeta] 

def next(self): 
    # Take a uniform 0-1 pseudo-random value: 
    u = random.random()  

    # Translate the Zipf variable: 
    return bisect.bisect(self.distMap, u) - 1
4

0 回答 0