[Tutor] What's the best way to model an unfair coin?
Alan Gauld
alan.gauld at btinternet.com
Sun Oct 24 14:18:52 CEST 2010
"Richard D. Moores" <rdmoores at gmail.com> wrote
> 'H's and 'T's. If you want the coin to have the probability of a
> head
> to be 6/11,
>
> ['H', 'H', 'H', 'H', 'H', 'H', 'T', 'T', 'T', 'T', 'T']
>
> is the list to use. Use random.choice on the list, for a 6/11 heads
> probability.
That will work but as you say is not very general.
You could write a function that takers the desired probablity
as an input and returns a result based on that.
The simplest way its to generate a random number between
0 and 1 and compare to the required probability expressed
as a decimal fraction.
In pseudo code:
def coinToss(prob = 0.5):
rand = random()
if rand >= prob: return True
else: return False
print "Heads" if coinToss(6/11) else "Tails"
> Am I missing something that's already there in Python 2.6 or 3.1
> (the
> 2 I have)?
There may well be functions in some of the modules that do it but
the approach above suffices for most applications.
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list