code: def sample_gaussian(mean, covar, covariance_type='diag', n_samples=1,
                      random_state=None):
      
      rng = check_random_state(random_state)
      n_dim = len(mean)
      rand = rng.randn(n_dim, n_samples)
      if n_samples == 1:
          rand.shape = (n_dim,)
  
      if covariance_type == 'spherical':
          rand *= np.sqrt(covar)
      elif covariance_type == 'diag':
          rand = np.dot(np.diag(np.sqrt(covar)), rand)
      else:
          s, U = linalg.eigh(covar)
          s.clip(0, out=s)        # get rid of tiny negatives
          np.sqrt(s, out=s)
          U *= s
          rand = np.dot(U, rand)
  
      return (rand.T + mean).T
docs: Generate random samples from a Gaussian distribution.
  
      Parameters
      ----------
      mean : array_like, shape (n_features,)
          Mean of the distribution.
  
      covar : array_like, optional
          Covariance of the distribution. The shape depends on `covariance_type`:
              scalar if 'spherical',
              (n_features) if 'diag',
              (n_features, n_features)  if 'tied', or 'full'
  
      covariance_type : string, optional
          Type of the covariance parameters.  Must be one of
          'spherical', 'tied', 'diag', 'full'.  Defaults to 'diag'.
  
      n_samples : int, optional
          Number of samples to generate. Defaults to 1.
  
      Returns
      -------
      X : array, shape (n_features, n_samples)
          Randomly generated sample