Задать вопрос
LeshaGFB
@LeshaGFB
Верстальщик

Изменить вероятность выпадения чисел?

Делаю первые шаги в изучении python. Установил модуль numPy.
У меня выводится любое случайное число до 100 при помощи
np.random.randint(100, size=1)

Вопрос: Возможно ли сделать так, чтоб вероятность вывода значений от 0 до 50 была выше, нежели от 50 до 100?

Буду благодарен, если напишите в сторону чего смотреть, может скинете какой-либо источник, где будет подробно описан этот процесс.
  • Вопрос задан
  • 1251 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
Vlad_IT
@Vlad_IT
Front-end разработчик
Нужно смотреть на результат rand как на некое число, вероятность выпадания которого равно 1 / N. И чтобы ваше реальное число выпадало в два раза чаще, ее вероятность должна быть равна двум этим числам 2 * (1 / N).
В вашем примере, вероятность выпадания любого числа равна 1 / 100, чтобы для чисел от 0 до 50 вероятность была например 2 / N, нужно чтобы они занимали по два числа из результата randint.

rand = np.random.randint(150, size=1)[0]
if rand < 100:
    res = rand // 2
else:
    res = rand - 50


т.е. если rand < 100, то это числа первой половины, вероятность каждого из которой равны 2 / N, а для rand > 100 and rand < 150 все также 1 / N
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dmshar
Начните с "смотрения" в сторону теории вероятности. Для начала. Источников в сети - сотни и тысячи.

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

Войдите, чтобы написать ответ

Похожие вопросы