Конечно. Не совсем понятно, хотите ли вы плавного свертывания, поэтому (например) 2 и 8 возвращаются чаще, чем 5 или 6, но общая идея работает в любом случае.
Типичный способ сделать это - генерировать больший диапазон чисел, чем вы выводите. Например, давайте начнем с 5 в качестве базовой линии, встречающейся с частотой N. Предположим, что вы хотите, чтобы 4 или 7 возникали на частоте 2N, 3 или 8 на частоте 3N, 2 или 9 и частоте 4N и 0 или 10 на частоте 5N. .
Добавляя их, нам нужны значения от 1 до 29 (или от 0 до 28, или что-то еще) от генератора. Любой из первых 5 дает выходной сигнал 0. Любой из следующих 4 дает выходной сигнал 1. Любой из следующих 3 дает выходной сигнал 2 и т. Д.
Конечно, это не меняет значений, возвращаемых исходным генератором - это просто позволяет нам написать собственный генератор, который производит числа в соответствии с выбранным нами распределением.