code: def _sample_proportional(self, batch_size):
      mass = []
      total = self._it_sum.sum(0, len(self._storage) - 1)
      # TODO(szymon): should we ensure no repeats?
      mass = np.random.random(size=batch_size) * total
      idx = self._it_sum.find_prefixsum_idx(mass)
      return idx
  
imports: import random
  from typing import Optional, List, Union
  import numpy
  from stable_baselines.common.segment_tree import SumSegmentTree, MinSegmentTree
  from stable_baselines.common.vec_env import VecNormalize
label_desc: Use image node_id 4 for calling the PrioritizedReplayBuffer obj's underlying member method code with example usage: obj._sample_proportional(batch_size) and returns: idx