from scipy import special
import numpy as np
import matplotlib.pyplot as plt


mu=0
sig2=1
P = []
C = []
z=10

X = np.arange(mu-z*np.sqrt(sig2), mu+z*np.sqrt(sig2), 0.1)
for i in X:
    P.append(np.exp(-(i - mu)**2 / (2*sig2) ) / np.sqrt(2*np.pi*sig2))
for i in X:
    C.append((1+special.erf((i-mu)/(np.sqrt(sig2*2))))/2)

plt.figure('Probability Distribution')
plt.plot(X, P)
x_axis = np.arange(mu-z*np.sqrt(sig2), mu+z*np.sqrt(sig2), 1)
y_axis = np.arange(0, 1.1, 0.1)
plt.xticks(x_axis)
plt.yticks(y_axis)
plt.xlabel('x')
plt.ylabel('Pr[X=x]')
plt.title('Normal PDF with μ=%.2f and σ²=%.2f' %(mu, sig2))

if(1):
    plt.figure('Cumulative Distribution')
    plt.plot(X, C)
    x_axis = np.arange(mu-z*np.sqrt(sig2), mu+z*np.sqrt(sig2), 1)
    y_axis = np.arange(0, 1.1, 0.1)
    plt.xticks(x_axis)
    plt.yticks(y_axis)
    plt.xlabel('x')
    plt.ylabel('Pr[X<=x]')
    plt.title('Normal CDF with μ=%.2f and σ²=%.2f' %(mu, sig2))

plt.show()
