import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt

def alternee(sigma) :
    for i in range(len(sigma)-1) :
        if (-1)**i*(sigma[i+1]-sigma[i]) < 0 :
            return False
    return True
    
def fact(n) :
    r = 1
    for i in range(1,n+1) :
        r *= i
    return r
    
def u(n) :
    nb = 0
    L = [k for k in range(n)]
    N = 100
    for _ in range(N) :
        if alternee(rd.permutation(L)) :
            nb += 1
    return nb/N
    
def f(t) :
    s = 0
    for k in range(20) :
        s += u(2*k+1)*t**(2*k+1)
    return s

def g(t) :
    s = 0
    for k in range(20) :
        s += u(2*k)*t**(2*k)
    return s
    
# X = np.linspace(-1,1,100)
# Y = [f(t)+g(t) for t in X]
# plt.plot(X,Y)
# Z = [np.tan(t)+1/np.cos(t) for t in X]
# plt.plot(X,Z)
# plt.show()