True or false output based on a probability

PythonScientific Computing

Python Problem Overview


Is there a standard function for Python which outputs True or False probabilistically based on the input of a random number from 0 to 1?

example of what I mean:

def decision(probability):
    ...code goes here...
    return ...True or False...

the above example if given an input of, say, 0.7 will return True with a 70% probability and false with a 30% probability

Python Solutions


Solution 1 - Python

import random

def decision(probability):
    return random.random() < probability

Solution 2 - Python

Given a function rand that returns a number between 0 and 1, you can define decision like this:

bool decision(float probability)
{
   return rand()<probability;
}

Assuming that rand() returns a value in the range [0.0, 1.0) (so can output a 0.0, will never output a 1.0).

Solution 3 - Python

Just use PyProbs library. It is very easy to use.

>>> from PyProbs import Probability as pr
>>> 
>>> # You can pass float (i.e. 0.5, 0.157), int (i.e. 1, 0) or str (i.e. '50%', '3/11')
>>> pr.Prob(50/100)
False
>>> pr.Prob(50/100, num=5)
[False, False, False, True, False]

Solution 4 - Python

I use this to generate a random boolean in python with a probability:

from random import randint
n=8 # inverse of probability
rand_bool=randint(0,n*n-1)%n==0

so to expand that :

def rand_bool(prob):
    s=str(prob)
    p=s.index('.')
    d=10**(len(s)-p)
    return randint(0,d*d-1)%d<int(s[p+1:])

I came up with this myself but it seems to work.

Solution 5 - Python

If you want to amass a lot of data, I would suggest using a map:

    from numpy import random as rn
    p = 0.15
    data = rn.random(100)
    final_data = list(map(lambda x: x < p, data))

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMike VellaView Question on Stackoverflow
Solution 1 - PythonNPEView Answer on Stackoverflow
Solution 2 - PythonBlindyView Answer on Stackoverflow
Solution 3 - PythonOmerFIView Answer on Stackoverflow
Solution 4 - PythonaritraView Answer on Stackoverflow
Solution 5 - PythonPaulView Answer on Stackoverflow