My numerical calculation does not agree with Wigner's Surmise.
On page 11 of https://arxiv.org/pdf/1712.07903.pdf, it derives a distribution for the spacing between the eigenvalues of a matrix. I wrote some python code to try and plot a histogram of this distribution and my distribution is different to the one derived in the paper.
Analytical distribution: $P(s) = \frac12s\ e^{-\frac{s^2}{4}}$
Here is the code I use to generate the data:
s_list = []
for i in range(100000):
mat = np.zeros((2, 2))
mat[0, 0] = np.random.normal(0, 1)
mat[1, 1] = np.random.normal(0, 1)
mat[1, 0] = mat[0, 1] = np.random.normal(0, 1/2)
s = np.abs(np.linalg.eig(mat)[0][0] - np.linalg.eig(mat)[0][1])
s_list.append(s)
And to plot the data:
def wigner(x_input):
output = (x_input/2)*np.exp(-(x_input**2)/4)
return output
x_plot = np.arange(0, 8, 0.01)
y_plot = wigner(x_plot)
plt.hist(s_list, bins="auto", density = True)
plt.plot(x_plot, y_plot)
plt.show()

You must use $$ \texttt{np.random.normal(0, (1/2)**0.5)} $$
instead of $$ \texttt{np.random.normal(0, 1/2)}$$
In the paper, $x_3 \sim N(0,1/2)$ means that $\sigma^2 = \frac 12$, but the function in python accepts $\sigma$ as an input, not $\sigma^2$. This is the new histogram: