from math import *
import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt

## PARTIE 0 - UTILITAIRES DE SIMULATION

## Fonctions permettant de procéder à N tirages d'une variable aléatoire
## selon la loi de distribution de probabilité choisie
## renvoient un tableau (numpy) et non une liste

def tirageUniforme(centre,demiEtendue,N):
    return rd.uniform(centre-demiEtendue,centre+demiEtendue,size=N)

def tirageNormal(moyenne,ecartType,N):
    return rd.normal(moyenne,ecartType,size=N)

## Fonction permettant d'affichier l'histogramme des données
## dans une liste ou un tableau
## nécessite l'appel plt.show() ou plt.draw() ensuite
## bins='rice' (argument optionnel) optimise l'histogramme
## on peut le modifier en passant une valeur numérique : bins=nbre, qui est
## le nombre de colonnes souhaitées.
# Appel : histo(tab) ou bien histo(tab,bins=40)
def histo(data,bins='rice',rwidth=0.8):
    return plt.hist(data,bins=bins,rwidth=rwidth)

## Appel de fonctions statistiques
## Moyenne d'un tableau
# moy=np.mean(tab)
## Ecart type ("standard deviation"). Si l'on ne connaît pas la moyenne,
## on doit diviser par N-1 et non par N : ddof=1 à passer
# ecartyp=np.std(tab,ddof=1)

## exemple (décommenter : tester pour voir l'influence de N et de la
## loi de distribution
# N=10000
# tab=tirageNormal(1,0.5,N)
# histo(tab, bins=40)
# plt.show()
# print("Moy : ", np.mean(tab), " - σ : ", np.std(tab,ddof=1))

## PARTIE I
## question c
# Définir ci-dessous les variables m1, T1, m2, T2 et TF :


# Entrer l'expression de mu

## question d
N=100000
# Les variables expérimentales sont maintenant des tableaux
# compléter et décommenter :

m1=tirageUniforme(250.,0.1,N) # remplacer les 250g par la bonne valeur
# m2=
# T1=
# T2=
# TF=

# Les formules peuvent, sur des tableaux et contrairement aux
# listes, être appliquées directement sur les tableaux, sans
# boucle : 2*T renvoie un tableau de même longueur que T, où
# chaque élément a été multiplié par 2.
# Remarque : pour appliquer cos, sqrt,... sur un tableau, il
# faut alors utiliser np.cos, np.sqrt (et pas math.cos ...)

# Entrer l'expression de µ

# histogramme :

