code: def weighted_choice(self, probabilities, key):
          
  
          total = sum(x[0] for x in probabilities)
          choice = total * self._random(key)
  
          for probability, option in probabilities:
              choice -= probability
              if choice <= 0:
                  return option
docs: Makes a weighted choice between several options.
  
          Probabilities is a list of 2-tuples, (probability, option). The
          probabilties don't need to add up to anything, they are automatically
          scaled.