|
Description:
weighted choice from list
Source: Text Source
import random
def windex(lst):
'''an attempt to make a random.choose() function that makes weighted choices
accepts a list of tuples with the item and probability as a pair
like: >>> x = [('one', 0.25), ('two', 0.25), ('three', 0.5)]
>>> y=windex(x)'''
n = random.uniform(0, 1)
for item, weight in lst:
if n < weight:
break
n = n - weight
return item
Discussion:
This makes weighted random choices just as the doc string says. We batted this around on the tutor list a while and folks there imporved it, but whatever flaws remain are mine.
|