title: How can I implement bivariate normal Gaussian noise?
body: <p>I want to implement complex standard Gaussian noise in python or C. This figure shows what I want to implement.</p>
  
  <p><a href="https://i.stack.imgur.com/05lXd.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/05lXd.jpg" alt="enter image description here"></a></p>
  
  <p>And first I implement it in python, like this.</p>
  
  <pre><code>import numpy as np
  from mpl_toolkits.mplot3d import Axes3D
  import matplotlib.pyplot as plt
  import pylab as pl
  
  size = 100000
  BIN = 70
  
  x = np.random.normal(0.0,1.0,size)
  y = np.random.normal(0.0,1.0,size)
  
  xhist = pl.hist(x,bins = BIN,range=(-3.5,3.5),normed = True)
  yhist = pl.hist(y,bins = BIN,range=(-3.5,3.5),normed = True)
  xmesh = np.arange(-3.5,3.5,0.1)
  ymesh = np.arange(-3.5,3.5,0.1)
  Z = np.zeros((BIN,BIN))
      for i in range(BIN):
       for j in range(BIN):
           Z[i][j] = xhist[0][i] + yhist[0][j]
  X,Y = np.meshgrid(xmesh,ymesh)
  fig = plt.figure()
  ax = Axes3D(fig)
  ax.plot_wireframe(X,Y,Z)
  plt.show()
  </code></pre>
  
  <p>However, it is not standard complex Gaussian noise.</p>
  
  <p>The output figure become:</p>
  
  <p><a href="https://i.stack.imgur.com/4cFtk.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4cFtk.jpg" alt="enter image description here"></a></p>
  
  <p>I think Gaussian noises are additive, however, why it become so different?</p>
  
  <p>I already tried to change the parts of code </p>
  
  <pre><code>x = np.random.normal(0.0,1.0,size)
  y = np.random.normal(0.0,1.0,size)
  </code></pre>
  
  <p>to</p>
  
  <pre><code>r = np.random.normal(0.0,1.0,size)
  theta = np.random.uniform(0.0,2*np.pi,size)
  x = r * np.cos(theta)
  y = r * np.sin(theta)
  </code></pre>
  
  <p>however, the result was same.</p>
  
  <p>Please tell me the correct implementation or equation of bivariate standard Gaussian noise.</p>