Как эффективно генерировать распределенные числа Zipf?
В настоящее время я тестирую некоторые структуры данных в C ++ и хочу проверить их при работе с числами, распределенными по Zipf.
Я использую генератор, представленный на этом сайте:http://www.cse.usf.edu/~christen/tools/toolpage.html
Я адаптировал реализацию, чтобы использовать генератор Mersenne Twister.
Это работает хорошо, но это действительно медленно. В моем случае диапазон может быть большим (около миллиона), а число генерируемых случайных чисел может составлять несколько миллионов.
Альфа-параметр не меняется со временем, он фиксированный.
Я попытался предварительно просуммировать все sum_prob. Это намного быстрее, но все еще замедляется на большом расстоянии.
Существует ли более быстрый способ генерирования распределенных чисел Zipf? Будет приветствоваться даже что-то менее точное.
Спасибо