code: """
      Code by Tae-Hwan Hung(@graykode)
      https://en.wikipedia.org/wiki/Normal_distribution
  """
  import numpy as np
  from matplotlib import pyplot as plt
  
  def gaussian(x, n):
      u = x.mean()
      s = x.std()
  
      # divide [x.min(), x.max()] by n
      x = np.linspace(x.min(), x.max(), n)
  
      a = ((x - u) ** 2) / (2 * (s ** 2))
      y = 1 / (s * np.sqrt(2 * np.pi)) * np.exp(-a)
  
      return x, y, x.mean(), x.std()
  
  x = np.arange(-100, 100) # define range of x
  x, y, u, s = gaussian(x, 10000)
  
  plt.plot(x, y, label=r'$\mu=%.2f,\ \sigma=%.2f$' % (u, s))
  plt.legend()
  plt.savefig('graph/gaussian.png')
  plt.show()
  
apis: matplotlib.pyplot.legend matplotlib.pyplot.savefig numpy.exp numpy.arange matplotlib.pyplot.show numpy.sqrt matplotlib.pyplot.plot