Python, Scipy - как вернуть значение с вероятностью между 2 значениями - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть что-то вроде этого:

empty=0
full=1
burn=2
myprob=0.7

if cell==burn:
   return (empty or full) with probability  myprob

Как я могу это сделать? Спасибо!

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Выражение

numpy.random.random() < myprob

оценивается как True с вероятностью myprob.Поскольку False и True интерпретируются как целые числа 0 и 1, вы можете использовать

[empty, full][numpy.random.random() < myprob]

для выбора между двумя заданными значениями с заданной вероятностью.Для ваших конкретных значений empty и full первое выражение будет в основном то же самое - второе вам нужно, только если empty и full не 0 и 1 соответственно.

1 голос
/ 15 февраля 2012

Я не совсем уверен, что понимаю ваш вопрос.В вашем коде:

return (empty or full) with probability  myprob

(empty or full) #will always be 1

Итак, я предполагаю, что вы хотите что-то:

0,7 = 70% случаев возвращаются пустыми 0,3 = 30% случаев возвращаются полными

Если это то, что вы хотите, все, что вам нужно сделать, это:

   from random import random
   if cell==burn:
       return (random() > my_prob)

random() вернет число от 0 до> 1.если у вас значение, отличное от 0/1, например empty и full, просто выполните дополнительное условие if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...