Raymond Hettinger <[email protected]> added the comment:
I also looked at another method using binomial variates but couldn't get it to
run faster than the alias method:
def choices(population, weights, *, k=1):
r = 1.0
n = k
selections = []
for elem, p in zip(population, weights):
v = binomial_variate(n, p / r)
selections += [elem] * v
n -= v
r -= p
shuffle(selections)
return selections
The shuffle step took as much time as the alias method. Also, the binomial
variate was hard to compute quickly and without overflow/underflow issues for
large inputs.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue41131>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com