Этот вопрос закрыт для ответов, так как повторяет вопрос Как решить задачу на программирование?
@Proshka17

Задача на программирование?

Добрый день! Никак не могу понять как решить следующую задачу на прогрмаммирование:
Напишите программу, которая бы из случайной бернуллевской величины с p = q = 0.5 и простых
математических операций можно было бы получить случайную бернуллевскую величину с
любым наперёд заданным p ∈ [0,1].

Проблема не в реализации(до нее я пока не дошел), а в том как вообще представить вероятностное распределение на языке программирования?
  • Вопрос задан
  • 1476 просмотров
Ответы на вопрос 1
longclaps
@longclaps
Хех, пригорает у зайки ))

from random import randint

def coin():
    """ реализация случайной бернуллиевской величины с p = q = 0.5 """
    return randint(0, 1)

def bernoulli(p):
    r = 0.
    for _ in range(53):  # магическое число обусловлено разрядностью типа float
                         # https://ru.wikipedia.org/wiki/Число_двойной_точности
        if coin():  # тут должен быть быть источник случайной величины из условия,
                    # например итератор по списку случайных нулей и единиц
            r += 1.
        r *= .5
    return int(r < p)

n, p = 10 ** 5, 1 / 3
print(sum(bernoulli(p) for _ in range(n)) / n)
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы