class_docstr: Class for an n-fold product manifold :math:`M^n`.
  
  Define a manifold as the product manifold of n copies of a given base
  manifold M.
  
  Parameters
  ----------
  base_manifold : Manifold
      Base manifold.
  n_copies : int
      Number of replication of the base manifold.
  default_coords_type : str, {\'intrinsic\', \'extrinsic\', etc}
      Coordinate type.
      Optional, default: 'intrinsic'.
docstr: Sample in the product space from the product distribution.
  
  The distribution used is the product of the distributions that each copy of the
  manifold uses in its own random_point method.
  
  Parameters
  ----------
  n_samples : int, optional
      Number of samples.
  bound : float
      Bound of the interval in which to sample for non compact manifolds.
      Optional, default: 1.
  
  Returns
  -------
  samples : array-like, shape=[..., n_copies, *base_shape]
      Points sampled on the product manifold.
docstr_tok: ["Sample","in","the","product","space","from","the","product","distribution",".","The","distribution","used","is","the","product","of","the","distributions","that","each","copy","of","the","manifold","uses","in","its","own","random_point","method",".","Parameters","--","--","--","--","--","n_samples",":","int",",","optional","Number","of","samples",".","bound",":","float","Bound","of","the","interval","in","which","to","sample","for","non","compact","manifolds",".","Optional",",","default",":","1",".","Returns","--","--","--","-","samples",":","array-like",",","shape=","[","...",",","n_copies",",","*","base_shape","]","Points","sampled","on","the","product","manifold","."]
code: def random_point(self, n_samples=1, bound=1.0):
      """Sample in the product space from the product distribution.
  
      The distribution used is the product of the distributions that each copy of the
      manifold uses in its own random_point method.
  
      Parameters
      ----------
      n_samples : int, optional
          Number of samples.
      bound : float
          Bound of the interval in which to sample for non compact manifolds.
          Optional, default: 1.
  
      Returns
      -------
      samples : array-like, shape=[..., n_copies, *base_shape]
          Points sampled on the product manifold.
      """
      sample = self.base_manifold.random_point(
          n_samples * self.n_copies, bound
      )
      reshaped = gs.reshape(
          sample, (n_samples, self.n_copies) + self.base_manifold.shape
      )
      if n_samples > 1:
          return reshaped
      return gs.squeeze(reshaped, axis=0)
  
imports: import geomstats.backend
  import geomstats.errors
  from geomstats.geometry.manifold import Manifold
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 6 for calling the NFoldManifold obj's underlying member method code with example usage: obj.random_point(n_samples, bound) and returns: gs, reshaped