Для того, чтобы сгенерировать нестандартное распределение, во многих случаях можно использовать метод обратного преобразования Смирнова.
Для его использования подбираем несложную функцию, которая описывает желаемое распределение. Например, равномерное распределение - это прямая y=x (в этом случае ничего делать не нужно). Пусть мы хотим плавное распределение в диапазоне 0..1, при котором 50% чисел будут меньше 0.1, а 80% чисел будут меньше 0.5. Чуть поиграв, выберем функцию f=x^(1/3)
(красная линия). Плотность распределения выше там, гдe функция быстрее растёт (значение производной больше) - в данном случае в начале диапазона.
Теперь найдём обратную функцию - F=x^3
- синяя линия. (если исходная была y=f(x), то выразим x через y, это не всегда возможно)
График обратной функции является отражением исходной отноительно прямой y=x
. Это свойство можно использовать, если распределение задано не единой функцией, а, например, набором отрезков.

Теперь сгенерируем набор равномерно распределённых случайных чисел и применим к каждому результату обратную функцию. Получится набор с желаемым распределением. Пример гистограммы распределения для 3000 точек ниже, примерно 80% значений меньше 0.5 (2373 в данной генерации)

Как иллюстрация к сигмоиде из комментария к вопросу:
