Вам это, случайно, не для моделирования этой случайной величины нужно? Если так, формула не нужна, а нужен один из алгоритмов, выбор которого зависит от того, насколько много памяти можно потратить для экономии времени и каково множество значений величины. Например, если множество значений — конечное

, можно использовать такой линейный по времени от мощности носителя величины алгоритм:
Код:
p:= (равномерно распределённое в [0; 1) вещественное число)
для всех i из I
если p <= 0, вернуть i
p := p - (вероятность величине принять значение i)
Если множество значений упорядочено, можно подсчитать заранее функцию распределения

, представленную как массив частичных сумм вероятностей значений величины, и искать в нём двоичным поиском уже за логарифмическое время. Это предпочтительно, если величина

моделируется много-много раз.
Есть методы, дающие почти константное время, основанные на приближении вероятностей дробями с фиксированным знаменателем, и другие.
UPD. А если нет, то, опять же, скорее всего вам не нужна функция, а нужен алгоритм. Приводите все вероятности к общему знаменателю (удачи, если они не рациональные!) и повторяете каждое значение в выходной последовательности числитель его вероятности раз. Вообще, конечно, я применил телепатию, и вы должны были описать то, что вам нужно, намного более внятно.