From: Raymond Hettinger Date: Mon, 5 Sep 2016 20:15:02 +0000 (-0700) Subject: Improve recipe by showing results of intermediate steps X-Git-Tag: v3.6.0b1~247^2~43 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f5b7c7bfc1876ac0f262f2f05952ec8841542f0a;p=python Improve recipe by showing results of intermediate steps --- diff --git a/Doc/library/random.rst b/Doc/library/random.rst index 677090a5ff..22f18a0cd5 100644 --- a/Doc/library/random.rst +++ b/Doc/library/random.rst @@ -328,6 +328,9 @@ population with repeats:: >>> weighted_choices = [('Red', 3), ('Blue', 2), ('Yellow', 1), ('Green', 4)] >>> population = [val for val, cnt in weighted_choices for i in range(cnt)] + >>> population + ['Red', 'Red', 'Red', 'Blue', 'Blue', 'Yellow', 'Green', 'Green', 'Green', 'Green'] + >>> random.choice(population) 'Green' @@ -337,6 +340,9 @@ with :func:`itertools.accumulate`, and then locate the random value with >>> choices, weights = zip(*weighted_choices) >>> cumdist = list(itertools.accumulate(weights)) + >>> cumdist # [3, 3+2, 3+2+1, 3+2+1+4] + [3, 5, 6, 10] + >>> x = random.random() * cumdist[-1] >>> choices[bisect.bisect(cumdist, x)] 'Blue'