У меня есть модель, в которой состояние j среди M состояний выбирается с вероятностью p_j. Вероятность может быть любым действительным числом. Это определяет модель смеси по M состояниям. Я могу получить доступ к p_j для всех j в постоянное время.
Я хочу сделать большое количество (N) случайных выборок. Наиболее очевидный алгоритм -
1) Рассчитать совокупное распределение вероятностей P_j = p_1 + p_2 + ... p_j. O (M)
2) Для каждого образца выберите случайное число с плавающей точкой x в [0,1]. O (N)
3) Для каждой выборки выберите j так, чтобы min (0, P_j-1)
Таким образом, асимптотическая сложность равна O (Nlog (M)). Фактор N, очевидно, неизбежен, но меня интересует log (M). Можно ли превзойти этот фактор в реалистичной реализации?