code: def Random(self):
          
          if len(self.d) == 0:
              raise ValueError('Pmf contains no values.')
  
          target = random.random()
          total = 0.0
          for x, p in self.d.iteritems():
              total += p
              if total >= target:
                  return x
  
          # we shouldn't get here
          assert False
docs: Chooses a random element from this PMF.
  
          Returns:
              float value from the Pmf