Un jeu.

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 26 juil. 2007 à 23:50
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 27 juil. 2007 à 15:55
Salut tout le monde,




En cette période de vacances je propose aux courageux delphinautes présents au poste un petit jeu qui pourrait avoir des conséquences sur certains algorithmes informatiques.



Voici la règle du jeu, très simple:

Un joueur écrit à mon insu deux nombres différents sur deux cartes qu'il pose, faces cachées, sur la table. Je retourne l'une des deux cartes et je découvre le nombre qui y est inscrit.

-Je peux soit conserver cette carte, soit choisir l'autre.

-Je gagne si je prends la carte qui a le plus grand des deux nombres; sinon, je perds.

Plus simple, tu meurs, non?



Question:


Quelles sont mes chances de gagner à ce jeu?


Il semble évident que j'ai une chance sur deux de gagner, comme dans le jeu de pile ou face, n'est-ce-pas?

Eh bien non!

Il existe une stratégie qui conduit à une probabilité de gain supérieur à 0.5 !


Si vous avez des idées et si vous n'avez pas lu le "POUR LA SCIENCE" du mois d'août, proposez... :)))


Je donnerai la réponse demain. Et je pense qu'elle en étonnera plus d'un.

(Je précise qu'il n'y a aucun truc. C'est que des maths!)

25 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 juil. 2007 à 15:26
Une petite compile des résultats à la c** de la proba.



Par contre, pour faire un code qui perçoit le c/2 faut se lever de bonne heure ou alors j'ai foiré mon code...

<?php
    for ($i = 0 ; $i < 400000 ; $i++)
    {
        // Rand renvoie un entier dans [-100000, 100000]
        $vals = array(rand(-100000, 100000), rand(-100000, 100000));
        $prem = rand(0, 1);
        $comp = rand(-100000, 100000);
        ($comp < $vals[$prem]) ? $select = $vals[$prem] : $select = $vals[$prem];
        if ($select == Max($vals[0], $vals[1])) $nbGagne++;
    }
    echo $nbGagne;
?>
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
27 juil. 2007 à 15:27
Et ma technique, elle va pas alors ?

N'empêche, c'est fou ce que les maths peuvent permettre. Il ne faut pas cependant oublier que les probabilités ne sont que des ... probabilités. Je n'ai pas testé mais faut voir si en vrai ça fonctionne vraiment.

Merci pour nous avoir diverti l'esprit !!!

A+
Flo
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
27 juil. 2007 à 15:32
@ rt15: chez moi, en pmplémentant la méthode de Crai, j'ai une proba de p = 0.67 donc c = 8.5.

Tu peux le vérifier en ajoutant ceci à mon code :

<hr size="2" width="100%" />procedure PlayStategy7;
var
  N: Integer;
begin
  // On choisit un nombre au hazard.
  // On tire la première carte. Si la valeur de la carte est supérieur au
  // nombre choisi, on accepte, sinon on change.
  N := RandomRange(Low(Integer), High(Integer));
  if ChooseCard(True) < N then
    ChangeCard;
end;

[...]

const
  NbreStrat = 7;
  Strategies: array[1..NbreStrat] of TProcedure =
  (PlayStategy1, PlayStategy2, PlayStategy3, PlayStategy4,
  PlayStategy5, PlayStategy6, PlayStategy7);
<hr size="2" width="100%" />
Et voila !
A+
Flo
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 juil. 2007 à 15:42
Nan, je pense que ton code à un problème...

0.67 -> 0.666666 -> 2/3
C'est pas une coincidence.

Je me suis retrouvé avec le même problème à un moment...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 juil. 2007 à 15:55
Non c'est le mien qui à un problème.

Je sors !
0
Rejoignez-nous