Par moins lisible, j'entends : retrait des accolades, commentaires inutiles, indentation, ..et le pire : le system pause!
au pire place un cin ou un scanf, que ca reste au moins linux compilable :we:
Bon passant ce détail, ui my bad pour le comptage des lancers :marteau: .
Encore qu'il reste à expliquer le phénomène.
Cela dit, je suis pas d'accord avec ta conclusion. Sur les lancers à 2 faces, je vois pas comment tu déduis que p2 est gagnant.
- Code: Tout sélectionner
#include
#include
#include
void simulation(int N, int nbFaces);
int main(int argc, char* argv[]){
int nbSimulation = 10;
int nbFaces = 50;
int N=10000;
srand ( time(NULL) );
for(int i=0; i<nbSimulation; i++){
std::cout<<std::endl;
srand ( rand() );
simulation(N, nbFaces);
}
return 0;
}
//note : si plusieurs faces sont les plus basses, alors on tire pas au pif
//parmi ces plus basses...todo mais osef.
int getLowestNumber(int compteurDeFaces[], int nbFaces){
int min = 0;
for(int i=1; i<nbFaces; ++i){
if(compteurDeFaces[i]<min){
min = compteurDeFaces[i];
}
}
return min;
}
/**
N : nombre de tirages
nbFaces : le nombre de choix possible, 2 pour une piece, 6 pour un dé...
*/
void simulation(int N, int nbFaces){
/* Algorithm
- 2 joueurs p1 et p2
- N tirages à n facettes "equiprobables"
Pour chaque tirage, p1 essaie de deviner au pif
p2 mise sur le la face qui est la moins sortie
*/
int* compteurDeFaces = new int[nbFaces];
int p1Success = 0;
int p2Success = 0;
for(int i=0; i<N; ++i){
int lancer = rand() % nbFaces;
//p1 devine au pif
int essaiP1 = rand()%nbFaces;
if(essaiP1 == lancer){
p1Success++;
}
//p2 mise sur la face la plus en retard
int essaiP2 = getLowestNumber(compteurDeFaces, nbFaces);
if(essaiP2 == lancer){
p2Success++;
}
//on memorise le nombre de pils/faces pour p2
compteurDeFaces[lancer]++;
}
std::cout<<"good guess average"<<std::endl;
std::cout<<"p1 : "<<(float)p1Success/N<<std::endl;
std::cout<<"p2 : "<<(float)p2Success/N<<std::endl;
delete[] compteurDeFaces;
}
le quasi même code, mais pour plus de boules. Pas de 3% en vue!
edit : oubli des résultats
- Code: Tout sélectionner
good guess average
p1 : 0.0193
p2 : 0.0187
good guess average
p1 : 0.0178
p2 : 0.0212
good guess average
p1 : 0.0197
p2 : 0.0191
good guess average
p1 : 0.0182
p2 : 0.0192
good guess average
p1 : 0.0218
p2 : 0.0178
good guess average
p1 : 0.0197
p2 : 0.0206
good guess average
p1 : 0.019
p2 : 0.018
good guess average
p1 : 0.0176
p2 : 0.0192
good guess average
p1 : 0.0214
p2 : 0.0211
good guess average
p1 : 0.0183
p2 : 0.0207
