diff --git a/Lib/random.py b/Lib/random.py index b2c0d6fcc3b..4b51b6696bf 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -375,6 +375,7 @@ class Random(_random.Random): if cum_weights is None: if weights is None: _int = int + n += 0.0 # convert to float for a small speed improvement return [population[_int(random() * n)] for i in range(k)] cum_weights = list(_itertools.accumulate(weights)) elif weights is not None: @@ -382,7 +383,7 @@ class Random(_random.Random): if len(cum_weights) != n: raise ValueError('The number of weights does not match the population') bisect = _bisect.bisect - total = cum_weights[-1] + total = cum_weights[-1] + 0.0 # convert to float hi = n - 1 return [population[bisect(cum_weights, random() * total, 0, hi)] for i in range(k)]