code: def inverse_cdf(su, W):
      j = 0
      s = W[0]
      M = su.shape[0]
      A = np.empty(M, 'int')
      for n in range(M):
          while su[n] > s:
              j += 1
              s += W[j]
          A[n] = j
      return A