class_docstr: Based on OpenAI Gym version
  (https://github.com/openai/gym/blob/master/gym/envs/classic_control/cartpole.py)
code: def reset(self, num_parallel=None):
      self._is_parallel = num_parallel is not None
      if self._is_parallel:
          self._parallel_indices = np.arange(num_parallel)
      else:
          self._parallel_indices = np.arange(1)
  
      # Physics parameters
      self._pole_mass = float(
          np.random.uniform(
              low=self._pole_mass_range[0],
              high=self._pole_mass_range[1],
          )
      )
      self._pole_length = float(
          np.random.uniform(
              low=self._pole_length_range[0],
              high=self._pole_length_range[1],
          )
      )
      self._cart_mass = float(
          np.random.uniform(
              low=self._cart_mass_range[0],
              high=self._cart_mass_range[1],
          )
      )
      self._relative_force = float(
          np.random.uniform(
              low=self._relative_force_range[0],
              high=self._relative_force_range[1],
          )
      )
  
      # Initialize state
      initials = np.tile(
          self._state_initials,
          reps=(self._parallel_indices.shape[0], 1),
      )
      self._states = np.random.uniform(low=-initials, high=initials)
  
      if self._is_parallel:
          return (
              self._parallel_indices.copy(),
              self._states[:, self._state_indices],
          )
      else:
          return self._states[0, self._state_indices]
  
file_path: tensorforce/tensorforce/environments/cartpole.py
imports: import numpy
  from tensorforce.environments import Environment
label_desc: Use image node_id 5 for calling the CartPole obj's underlying member method code with example usage: obj.reset(num_parallel) and returns: self,  self, self