code: def make_2D_samples_gauss(n, m, sigma, random_state=None):
      
  
      generator = check_random_state(random_state)
      if np.isscalar(sigma):
          sigma = np.array([sigma, ])
      if len(sigma) > 1:
          P = sp.linalg.sqrtm(sigma)
          res = generator.randn(n, 2).dot(P) + m
      else:
          res = generator.randn(n, 2) * np.sqrt(sigma) + m
      return res
docs: return n samples drawn from 2D gaussian N(m,sigma)
  
      Parameters
      ----------
  
      n : int
          number of samples to make
      m : np.array (2,)
          mean value of the gaussian distribution
      sigma : np.array (2,2)
          covariance matrix of the gaussian distribution
      random_state : int, RandomState instance or None, optional (default=None)
          If int, random_state is the seed used by the random number generator;
          If RandomState instance, random_state is the random number generator;
          If None, the random number generator is the RandomState instance used
          by `np.random`.
  
      Returns
      -------
      X : np.array (n,2)
            n samples drawn from  N(m,sigma)