import numpy as np
import matplotlib.pyplot as plt

n = 2
L = [0 for i in range(n)] + [i for i in range(1,n+1)]


def f(L) :
    n = len(L)/2
    k1 = np.random.randint(0,2*n)
    k2 = np.random.randint(0,2*n)
    while k2 == k1:
        k2 = np.random.randint(0,2*n)
    return([max(L[k1],L[k2]), min(L[k1],L[k2])])

def repetition(n,m):
    L = [0 for i in range(n)] + [i for i in range(1,n+1)]
    Lres = []
    for i in range(0,m):
        Lres.append(f(L))
    return Lres

def frequence(n,m):
    Lres = repetition(n,m)
    p = 0
    for i in Lres :
        p = p + (i[0]-1 == i[1])*1/m
    return p

def moyenne(n,m):
    p = 0
    for i in range(20):
        p = p + frequence(n,m)/20
    return p


T = np.array([n for n in range(2,100)])
P = []
X = []
for n in T:
    P.append(moyenne(n,100))
    X.append((1+(n-1)/n)*(1/(2*n-1)))

plt.plot(T,P,label = "Mes")
plt.plot(T,X, label = "Hyp")
plt.legend()
plt.show()
