dme*_*ter 17 random math probability
该齐普夫概率分布经常被用来在P2P系统的项目文件大小分布或项目的访问分布模型.例如"Web缓存和Zip像分布证据和影响",但Boost或GSL(Gnu科学库)都没有提供使用此分布生成随机数的实现.我还没有找到使用常见搜索引擎的(值得信赖的)实现.
如何使用U(0,1)随机生成器(例如Mersenne twister?)根据Zipf分布分布的随机数?
sta*_*nga 11
这是一个类似Python Zipf的分布式生成器,用于n带参数的项目alpha >= 0:
import random
import bisect
import math
class 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
Run Code Online (Sandbox Code Playgroud)
Yuv*_*l F 10
numpy.random.zipf使用python生成Zipf样本.
| 归档时间: |
|
| 查看次数: |
10016 次 |
| 最近记录: |