¿Cómo generar números distribuidos Zipf de manera eficiente?
Actualmente estoy comparando algunas estructuras de datos en C ++ y quiero probarlas cuando trabajo en números distribuidos por Zipf.
Estoy usando el generador proporcionado en este sitio:http: //www.cse.usf.edu/~christen/tools/toolpage.htm
dapté la implementación para usar un generador Mersenne Twister.
Funciona bien pero es muy lento. En mi caso, el rango puede ser grande (aproximadamente un millón) y la cantidad de números aleatorios que se generan puede ser de varios millones.
El parámetro alfa no cambia con el tiempo, es fijo.
Intenté precacular todos los sum_prob. Es mucho más rápido, pero aún se ralentiza a gran distancia.
¿Existe una forma más rápida de generar números distribuidos Zipf? Incluso algo menos preciso será bienvenido.
Gracia