Objectifs : Dans ce DM on s’intéresse au jeu de Pierre Papier Ciseaux et on cherche à savoir quelle est la bonne stratégie à avoir. On se concentre sur la version (non violente!) dite “à somme nulle” où le gagnant empoche 1 alors que le perdant perd 1. En cas d’égalité, personne ne perd ni ne gagne rien.

Question 1: Les joueurs sans mémoire

Le joueur biaisé :

  1. Commençons par estimer, grâce à une simulation, le gain du joueur B lorsque il joue contre le joueur A. Les deux joueurs n’ont pas de mémoire et ils ont une probabilité de 0.25 de jouer Pierre, 0.25 de jouer Feuille et 0.5 de jouer Ciseau. Soit la variable B, qui représente les gains du joueur B. Nous allons répéter n fois une partie de Pierre Feuille Ciseaux en nous intéressant seulement aux gains du joueur B.
n_parties = function (nombre=10000,proba_A=c(0.25,0.25,0.5),proba_B=c(0.25,0.25,0.5)){
  
  B=0;
  
  for(i in 1:nombre){
    elementA=sample(size = 1,x = c('P','F','C'),prob = proba_A);
    elementB=sample(size = 1,x = c('P','F','C'),prob = proba_B);
    
    #B remporte la partie 
    if( (elementA=='P'&&elementB=='F') || (elementA=='C'&&elementB=='P') || (elementA=='F'&&elementB=='C') ) {
      B=B+1;
    }
    #B perd la partie 
    if( (elementA=='P'&&elementB=='C') || (elementA=='F'&&elementB=='P') || (elementA=='C'&&elementB=='F') ) {
      B=B-1;
    }
    
    #sinon il y a match nul donc pas de points sont attribués 
    
  }
  
  B/nombre
}

n_parties()
## [1] 0.0046

Par simulation, on observe une espérance de gain nulle. Lorsque le joueur B rencontre le joueur A dans ces conditions (avec les mêmes probabilités) le jeu est équilibré donc l’espérance de gain est nulle.

  1. Maintenant, nous voulons connaître l’espérance des gains de B lorsque B à une probabilité de 0.3 de jouer Pierre, 0.3 de jouer Feuille et 0.3 de jouer Ciseau.
n_parties (proba_B = c(1/3,1/3,1/3))
## [1] 0.0039

Par simulation, on observe une espérance de gain nulle. Il semblerait que le jeu reste équilibré.

  1. Nous allons estimer l’espérance de gain du joueur B avec les différentes stratégies possibles. Pour cela, nous devons énumérer tous les cas possibles et simuler un nombre suffisant de parties pour chaque configuration. La fonction esp_gain_b nous donne une matrice (data frame) contenant les probabilités de la configuration (ex 0.1 ; 0.3 ; 0.6) et l’esperance du gain associé.
esp_gain_b = function(proba_a=c(1/4,1/4,1/2)){
  esp_b = c();
  x = 0;
  y = 0;
  i = 1;
  dataF = c();
  dataP = c();
  dataC = c();
  while(x<=1){
    while(y<=1 && x+y<=1){
      val3 = 1 - x - y;
      if(val3<0) val3 = 0;
      dataP[i] = x;
      dataF[i] = y;
      dataC[i] = val3;
      esp_b[i] =  n_parties (proba_B = c(x,y,val3),proba_A = proba_a)
      i = i + 1;
      y = y + 0.1;  
    }
    y = 0;
    x = x + 0.1;
  }
  return(data.frame(dataP,dataF,dataC,esp_b));
  
}

data_frame=esp_gain_b()

Nous pouvons alors analyser les résultats obtenus à l’aide de graphes.

with(data_frame,plot(dataF,esp_b,xlab = "Probabilité de jouer Feuille",ylab = "Espérance de gain de B"))

Tout d’abord, on observe que l’espérance de gain est forte lorsque la probabilité de jouer Feuille est nulle. Le joueur B doit donc éviter à tout prix de jouer Feuille pour maximiser ses gains.

with(data_frame,plot(dataP,esp_b,xlab = "Probabilité de jouer Pierre",ylab = "Espérance de gain de B"))

Ensuite, plus la probabilité de jouer Pierre est forte, plus le joueur B à de chances de gagner. Il doit donc jouer Pierre le plus de fois possible.

regression<- lm(esp_b ~ dataC ,data = data_frame)
with(data_frame,plot(dataC,esp_b,xlab = "Probabilité de jouer Ciseau",ylab = "Espérance des gains de B"))
abline(regression,col="red")

Enfin, on observe que la probabilité de jouer Ciseaux n’a pas d’’importance’influences sur l’espérance de gain du joueur B. En moyenne, le joueur B ne va pas gagner de points.

  1. La stratégie optimale pour B est donc de jouer uniquement Pierre. En effet, cela est compréhensible car A a une probabilité plus élevé de jouer Ciseaux. Donc l’espérance de gain sera plus élevé quand Pierre aura le plus de chance d’être joué. On peut noter qu’il ne faut en aucun cas jouer la Feuille car on a de très gros risques de perdre (comme le joueur A joue souvent Ciseaux). La configuration optimale du joueur B est donc de jouer Pierre avec une probabilité de 1 (d’où x=1 et y=0). Par simulation on observe une espérance associée de 0.25 environ (nous regardons la première ligne lorsque l’attribut espérance du data_frame est rangé en ordre décroissant.

  2. Essayons maintenant de retrouver tous ces résultats à l’aide d’un calcul exact. Soit une partie de Pierre Feuille Ciseaux une expérience aléatoire et soient A et B deux variables aléatoires correspondant respectivement au choix entre Pierre, Feuille ou Ciseaux des joueurs A et B. Soient (1/4,1/4,1/2) et (x,y,1-x-y) les probabilités de A et de B de choisir entre Pierre, Feuille et Ciseaux. Nous cherchons une configuration (stratégie) pour que B soit gagnant, cela revient à trouver la configuration qui maximise l’espérance de gain du joueur B, soit X cette espérance. On a alors \(X=gains * Probabilité De Gagner - pertes * Probabilité De Perdre\) D’où \(X= P((B='F') \cap (A='P')) + P((B='P') \cap (A='C')) + P((B='C') \cap (A='F')) - P((B='F') \cap (A='C')) - P((B='C') \cap (A='P')) - P((B='P') \cap (A='F'))\). Nous savons à ce stade que A et B sont indépendants car le choix du joueur B et totalement indépendant du choix du joueur A. Donc on obtient : \(X=P(B='F') * P(A='P') + P(B='P') * P(A='C') + P(B='C') * P(A='F') - P(B='F') * P(A='C') - P(B='C') * P(A='P') - P(B='P') * P(A='F') = y/4 + x/2 + (1-x-y)/4 -y/2 - (1-x-y)/4 - x/4 = x/4 - y/4.\) Or nous souhaitons maximiser l’espérance (MAX (X)). Pour maximiser cette soustraction, nous devons maximiser x et minimiser y. On doit alors mettre x à 1 et y à 0. L’espérance de gain associée à cette stratégie est alors de 0.25.

Le joueur non biaisé :

Reprennons les mêmes questions que précédemment avec le joueur A non biaisé, c’est à dire avec la même probabilité de jouer Pierre Feuille ou Ciseaux(1/3,1/3,1/3).

  1. Nous estimons l’esperance de gain du joueur B grâce à la fonction que nous avons faite dans la partie précedente. On a P(B)=(1/4,1/4,1/2).
n_parties(proba_A = c(1/3,1/3,1/3))
## [1] 0.002

Par simulation, on observe une espérance de gain nulle. Une telle configuration semble conduire à un jeu équilibré.

  1. Nous estimons l’esperance de gain du joueur B grâce à la fonction que nous avons faite dans la partie précedente. On a P(B)=P(A)=(1/3,1/3,1/3).
n_parties(proba_A = c(1/3,1/3,1/3), proba_B = c(1/3,1/3,1/3))
## [1] 0.0077

Par simulation, on observe une espérance de gain nulle. Une telle configuration semble aussi conduire à un jeu équilibré.

data_frame_2=esp_gain_b(proba_a = c(1/3,1/3,1/3))

Nous pouvons alors analyser les résultats obtenus à l’aide de graphes.

regression<- lm(esp_b ~ dataF ,data = data_frame_2)
with(data_frame_2,plot(dataF,esp_b,xlab = "Probabilité de jouer Feuille",ylab = "Espérance des gains de B"))
abline(regression,col="red")

regression<- lm(esp_b ~ dataP ,data = data_frame_2)
with(data_frame_2,plot(dataP,esp_b,xlab = "Probabilité de jouer Pierre",ylab = "Espérance des gains de B"))
abline(regression,col="red")