code: def sample(self, batch_info: BatchInfo, model: RlModel, number_of_steps: int) -> Rollout:
          
          if self.forward_steps > 1:
              transitions = self.replay_buffer.sample_forward_transitions(
                  batch_size=number_of_steps, batch_info=batch_info, forward_steps=self.forward_steps,
                  discount_factor=self.discount_factor
              )
          else:
              transitions = self.replay_buffer.sample_transitions(batch_size=number_of_steps, batch_info=batch_info)
  
          if self.ret_rms is not None:
              rewards = transitions.transition_tensors['rewards']
              new_rewards = torch.clamp(rewards / np.sqrt(self.ret_rms.var + 1e-8), -self.clip_obs, self.clip_obs)
              transitions.transition_tensors['rewards'] = new_rewards
  
          return transitions
docs: Sample experience from replay buffer and return a batch