Python – вероятность моделирования

У меня есть простая проблема. Мне нужен способ сделать функцию, которая генерирует 0s в p процентов случаях и 1s во всех остальных случаях. Я попытался сделать это с random.random () следующим образом:

p = 0.40 def generate(): x = random.random() if x < p: return 0 else: return 1 

Однако это не похоже на хороший способ. Или это?

One Solution collect form web for “Python – вероятность моделирования”

Ваш текущий метод отлично подходит, вы можете проверить это, выполнив несколько испытаний с большим количеством попыток. Например, мы ожидаем примерно 600000 Истинных результатов с 1000000 попытками:

 >>> sum(generate() for i in range(1000000)) 599042 >>> sum(generate() for i in range(1000000)) 599670 >>> sum(generate() for i in range(1000000)) 600011 >>> sum(generate() for i in range(1000000)) 599960 >>> sum(generate() for i in range(1000000)) 600544 

Послушайте.

Как отмечено в комментариях, вы можете немного сократить свой метод:

 p = 0.40 def generate(): return random.random() >= p 

Если вы хотите 1 и 0 вместо True и False вы можете использовать int(random.random() >= p) , но это почти бесполезно.

  • Случайное число с определенной дисперсией в Python
  • Создать случайное нарушение списка
  • Как создать случайный html-документ
  • Использование текстового файла для размещения слов в форме сетки
  • Как сохранить результат функции в переменной в Python?
  • Могу ли я указать numpy dtype при генерации случайных значений?
  • Python - лучший язык программирования в мире.