On peut utiliser le module numpy ou le module scipy
Liens :
http://www.python-simple.com/python-numpy-scipy/random-numpy.php
# -*- coding: utf-8 -*-
from math import *
from random import *
import matplotlib.pyplot as plt
import numpy as np
binomiale=np.random.binomial(50, 0.3, 1000)
plt.hist(binomiale,bins=50,range=(1,50),density=True)
plt.show()
normale=np.random.normal(5,2,1000)
plt.hist(normale,bins=50,density=True)
plt.show()
def DensiteNormale(x,mu,sigma):
return 1/(sigma * sqrt(2*pi))*exp(-0.5*((x-mu)/sigma)**2)
binomiale=np.random.binomial(50, 0.3, 1000)
normale=np.random.normal(15,3.2,1000)
plt.hist(binomiale,density=True,edgecolor='black', hatch='/' , alpha=0.2, label='loi binomiale')
plt.hist(normale,density=True,edgecolor='yellow', hatch='x', alpha = 0.2 ,label ='loi normale approchant la loi binomiale')
lx=np.linspace(0,50,200)
ly=[DensiteNormale(x,15,3.2) for x in lx]
plt.plot(lx,ly,'rx', label = ' fonction de densité de la loi normale')
plt.legend(loc='upper right')
plt.show()
import random
import numpy
from matplotlib import pyplot
x = [random.gauss(3,1) for _ in range(400)]
y = [random.gauss(4,2) for _ in range(400)]
bins = numpy.linspace(-10, 10, 100)
pyplot.hist(x, bins, alpha=0.5, label='x') # alpha correcpond à un coefficient de transparence
pyplot.hist(y, bins, alpha=0.5, label='y')
pyplot.legend(loc='upper right')
pyplot.show()
Exercice 1. On lance un dé supposé équilibré.
Soit X la variable aléatoire qui donne le gain du joueur. X est définie sur l'ensemble {1,2,3,4,5,6}
X(1)=3, X(2)=2, X(3)=-4, X(4)=2, X(5)= -4, X(6) = 2
On obtient la loi de probablilité :
$x_i$ | -4 | 2 | 3 |
---|---|---|---|
$ P(X)=x_i$ | $\frac{1}{3}$ | $\frac{1}{2}$ | $\frac{1}{6}$ |
X=[-4,2,3]
p=[1/3,1/2,1/6]
def esperance(valeurs,probabilites):
e=0
a= len(valeurs) # la longueur de la liste
for i in range(a):
e = e + probabilites[i]*valeurs[i] # somme des pi*xi
return e
def variance(valeurs,probabilites):
var,N = 0,0
e=esperance(valeurs,probabilites)
n=len(valeurs)
for i in range(n):
var = var+probabilites[i]*(valeurs[i]-e)**2
return var
def ecarttype(valeurs,probabilites):
return sqrt(variance(valeurs,probabilites))
# Mise au point de deux méthodes de simulations. simul2 est une généralisation de simul1.
def simul(valeurs,probabilites):
nb=random()
if 0<= nb < 1/3 :
return valeurs[0]
elif 1/3<= nb < 1/3+1/2 :
return valeurs[1]
else : return valeurs[2]
def simul2(valeurs,probabilites):
assert len(valeurs) == len(probabilites)
nb=random()
curseur=0
for i in range(len(valeurs)):
if curseur<=nb<curseur+probabilites[i]:
return valeurs[i]
curseur=curseur+probabilites[i]
S1=[simul(X,p) for i in range(40)]
S2=[simul2(X,p) for i in range(40)]
print(S1)
print(S2)
def echantillon(valeurs,probabilites,taille):
listeX=[]
for i in range(taille):
listeX.append(simul(valeurs,probabilites))
return listeX
def echantillon2(valeurs,probabilites,taille):
listeX=[]
for i in range(taille):
listeX.append(simul2(valeurs,probabilites))
return listeX
def frequences(valeurs,probabilites,taille):
echanti=echantillon(valeurs,probabilites,taille)
n=len(echanti)
F=[]
for x in valeurs:
F.append(echanti.count(x)/n)
return F
def frequences2(valeurs,probabilites,taille):
echanti=echantillon2(valeurs,probabilites,taille)
n=len(echanti)
F=[]
for x in valeurs:
F.append(echanti.count(x)/n)
return F
print(frequences(X,p,100))
print(frequences2(X,p,100))
def moyenne(liste):
return np.mean(liste)
moyenne(echantillon(X,p,100))
Écrire une fonction de paramètres (valeurs , probabilites , n , N) qui va simuler N échantillons de taille n de la variable aléatoire X (d’espérance μ et d’écart type σ) Si m désigne la moyenne de cet échantillon, la fonction devra renvoyer la proportion des cas où l’écart entre m et μ est inférieur ou égal à $\frac{2σ}{\sqrt(n)}$
mu=esperance(X,p)
sigma=ecarttype(X,p)
print(mu,sigma)
# test sur 20 échantillons de taille 100
for i in range(20):
L=frequences(X,p,100)
print(L,esperance(X,L),ecarttype(X,L))
def ecart(valeurs,probabilites,taille,nbechantillons):
mu=esperance(valeurs,probabilites)
sigma=ecarttype(valeurs,probabilites)
nbrecas=0
for i in range(nbechantillons):
L=frequences(valeurs,probabilites,taille)
esperanceEchantillon=esperance(valeurs,L)
if abs(esperanceEchantillon-mu)<=2*sigma / sqrt(taille): nbrecas=nbrecas+1
return nbrecas/nbechantillons
def ecart2(valeurs,probabilites,taille,nbechantillons):
mu=esperance(valeurs,probabilites)
sigma=ecarttype(valeurs,probabilites)
nbrecas=0
for i in range(nbechantillons):
L=echantillon2(valeurs,probabilites,taille)
m=moyenne(L)
if abs(m-mu)<=2*sigma / sqrt(taille): nbrecas=nbrecas+1
return nbrecas/nbechantillons
def demo():
X=[-4,2,3]
p=[1/3,1/2,1/6]
n=int(input("Entrer la taille de l'échantillon :"))
mu,sigma=esperance(X,p),ecarttype(X,p)
print("mu = %f , sigma = %f"%(mu,sigma))
L=echantillon(X,p,n)
print("Un échantillon : ", L)
print("La moyenne de l'échantillon : ",moyenne(L))
print("Les fréquences de l'échantillon", frequences(X,p,n))
nb=int(input("Entrer le nombre d'échantillons souhaités : "))
print("La proportion dans l'intervalle : ", ecart2(X,p,n,nb))
demo()
On lance un dé supposé équilibré.
Soit X la variable aléatoire qui donne le gain du joueur.
Soit l'expérience aléatoire : "On tire une carte dans un jeu de 32 cartes." On considère le jeu suivant :
On appelle X la variable aléatoire qui à une carte tirée associe un gain ou une perte. Déterminer la loi de probabilité de X.