code: def _sample_parameter_U(n_samples, n_dim, random_state=None):
      """Sample the U parameters of a Riemannian Gaussian distribution.
  
      Sample the eigenvectors of a SPD matrix following a Riemannian Gaussian
      distribution.
  
      See https://arxiv.org/pdf/1507.01760.pdf for the mathematical details.
  
      Parameters
      ----------
      n_samples : int
          How many samples to generate.
      n_dim : int
          Dimensionality of the SPD matrices to be sampled.
      random_state : int, RandomState instance or None, default=None
          Pass an int for reproducible output across multiple function calls.
  
      Returns
      -------
      u_samples : ndarray, shape (n_samples, n_dim)
          Samples of the U parameters of the Riemannian Gaussian distribution.
      """
  
      rs = check_random_state(random_state)
      u_samples = np.zeros((n_samples, n_dim, n_dim))
      for i in range(n_samples):
          A = rs.randn(n_dim, n_dim)
          Q, _ = np.linalg.qr(A)
          u_samples[i] = Q
  
      return u_samples
  
file_path: pyRiemann/pyriemann/datasets/sampling.py
imports: from functools import partial
  import warnings
  import numpy
  from scipy.stats import multivariate_normal
  from sklearn.utils import check_random_state
  from joblib import Parallel, delayed
  from ..utils.base import sqrtm, expm
  from ..utils.test import is_sym_pos_semi_def
label_desc: Use image node_id 8 for calling a global function with example usage: _sample_parameter_U(n_samples, n_dim, random_state) and returns: u_samples