import numpy.random as rd
import matplotlib.pyplot as plt

def collec(k,n) :
    L = rd.randint(1,n+1,k)
    M = []
    for x in L :
        if x not in M :
            M.append(x)
    return len(M)

def EZ(k) :
    N = 500
    n = 50
    s = 0
    for _ in range(N) :
        s += collec(k,n)
    return s/N

K = list(range(301))
Y = []
# for k in K :
#     Y.append(EZ(k))
# plt.plot(K,Y)
# plt.show()

def T(k) :
    n = 50
    L = [rd.randint(1,n+1)]
    c = 1
    while len(L) < k :
        x = rd.randint(1,n+1)
        if x not in L :
            L.append(x)
        c += 1
    return c

def ET(k) :
    N = 500
    n = 50
    s = 0
    for _ in range(N) :
        s += T(k)
    return s/N

for k in K[:51] :
    Y.append(ET(k))
plt.plot(K[:51],Y)
plt.show()