Bonjour.
Je souhaite faire un programme en C++ traitant un peu de probabilités.
Dans un premier temps, étant donné un tirage donné (par exemple, je sais pas moi, des notes dans une classe), j'aimerais pouvoir calculer l'espérance et l'écart-type.
Ca, je sais faire (je pense).
Je vous met un petit programme en C++, fait de tete (donc non testé) qui doit pouvoir faire ca (avec beaucoup de commentaires )
int main()
{
int effectif(0);
cout << "Combien de nombres dans la serie?" << endl;
cin >> effectif;
cout << "Donnez la serie chiffre par chiffre" << endl;
vector <int> serie;
int temp(0);
for (int i(0); i<effectif; i++)
{
cin << temp;
serie.push_back(temp);
}
// Jusqu'ici, on a un tableau contenant la série
int somme(0);
for (int i(0); i<serie.size(); i++)
{
somme += serie[i];
}
double esperance (0);
esperance = (somme+0.0)/(serie.size()+0.0);
// Maintenant on a l'espérance de la série
int somme2(0);
for (int i(0); i<serie.size(); i++)
{
somme2 += pow (serie[i] , 2);
}
double ecartType(0);
ecartType = somme2 - pow(esperance , 2);
ecartType = sqrt( ecartType );
// Maintenant, on a l'écart type de la série
cout << endl << "L'esperance de la serie est: " << esperance << " et son ecart type est: " << ecartType << endl;
return 0;
}
Maintenant que je me suis fait suer à vous faire ce programme de tete, sans le tester, je vais enfin pouvoir vous présenter ce que je voulais vous demander.
Je voudrais "simplement" inverser le processus.
C'est à dire connaissant l'espérance et l'écart-type d'une série, en déduire une série ayant ces propriétés.
Voici donc le programme, pour l'instant (tel que je l'imagine, là encore, sans test).
int main()
{
cout << "Donnez l'esperance puis l'ecart-type de la serie desiree" << endl;
int esperance(0), ecartType(0);
cin << esperance;
cin << ecartType;
vector <int> serie;
// A completer pour remplir le tableau serie, avec votre aide
cout << "Une serie ayant pour esperance " << esperance << " et pour ecart-type " << ecartType << " est" << endl;
for(int i(0); i<serie.size(); i++)
cout << serie[i];
cout << endl;
return 0;
}
Voilà, j'ai essayé d'etre le plus clair possible.
Merci déja à ceux qui seront allé jusqu'au bout de cet énorme pavé.
Enfin, merci d'avance à ceux qui me donneront une réponse
Bonjour,
Cela s'appelle de la simulation... Il faut donc utiliser le générateur de nombres aléatoires (ou en faire un soi-même).
Tout dépend de la loi statistique à simuler :
loi uniforme discrète ? continue ?
loi normale ?
etc ...
Il existe bien sûr une infinité de séries statistiques ayant une moyenne et un écart type donnés.
Euh...
Bon, alors déjà, on est d'accord qu'il y en a une infinité, c'est pourquoi j'ai bien fait attention à mettre "une série" et non pas "la série" dans mon programme et mes explications.
Ensuite, je ne comprends pas ton petit paragraphe de 4 lignes.
Je veux juste une série vérifiant ces deux critères qui soit discrète (ca veut bien dire qu'il y a un nombre fini de possibilités?)
Bon alors voici un exemple assez simple à réaliser :
Si on tire au hasard un grand nombre d'entiers au hasard dans {1, 2, 3, 4, ... N} répartition a priori uniforme) alors la moyenne théorique de la série est (N+1)/2 et la variance est (N2-1)/12. Cependant la moyenne et la variance réelles seront m et v.
Si on veut une série dont la moyenne est M et la variance V, il suffit alors de prendre l'image par de cette série particulière par la fonction affine f définie par :
f(x)=(V/v)x+(M-m) ou, mieux : sauf erreur
Donc, je crée d'abord un tableau contenant [1,2,3,...,N]
Je stocke alors m=(N+1)/2 et v=(N²-1)/12.
Pour chaque valeur du tableau, je calcule alors
[ f(1), f(2), f(3), ..., f(N) ]
et ca me fait alors ma série, c'est ca?
C'est presque ça !
1) créer un tableau de valeurs aléatoires.
2) calculer la moyenne m et l'écart type s de cette série
3) calculer les coefficients a et b de la transformation affine f : xax+b
si la moyenne désirée est M et l'écart type est S alors b=(M-m) et a=S/s
4) calculer un nouveau tableau de valeurs à l'aide de la transformation affine f définie par f(x)=ax+b
Si je ne me suis pas trompé, le tableau obtenu aura pour moyenne M et écart type S
1) Je vois
2) Je vois
3) Je vois presque M et S représentent quoi ici?
4) Je vois
Merci de prendre le temps de m'aider
M est la moyenne que l'on veut obtenir pour la série et S son écart type.
m et s sont les paramètres (moyenne et écart type) de la série de départ (valeurs calculées)
Par exemple on veut une moyenne de 165 (M=165) et un écart type de 15 (S=15) sur une série de taille 100 :
1)On fabrique une série aléatoire de 100 nombres réels compris entre 0 et 1 (les générateurs aléatoires font souvent ça)
2)On calcule la moyenne de cette série (m=0,52 par exemple) et son écart type (s=0,012 par exemple)
3)On calcule les coefficients a et b : a=15/0,012 et b=165-0,52
4)On calcule alors la nouvelle série comme image de la série de départ par la fonction f
Voila
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :