Начните с "смотрения" в сторону теории вероятности. Для начала. Источников в сети - сотни и тысячи.
Теперь про ваш вопрос.
Вы взяли РАВНОМЕРНОЕ распределение. И генерируете числа. Функции для генерации чисел согласно основным законом распределения действительно реализованы в Python/numpy. Если вы хотите генерировать числа с неким распределением, которое вы сами зададите - ничего не мешает это делать. Например, взяв за основу то самое равномерное распределение и выполнив преобразование по формуле плотности распределения, которую сами и напишете.