Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#26 25-07-2016 13:11:27

Camille23
Invité

Re : Peut - on battre le hasard ?

Bonjour,

Eh oui, il y a bien des triplets qui gagnent avec une probabilité > 0.75
Exemple 482, 762, 762

#27 25-07-2016 13:32:11

Yassine
Membre
Inscription : 09-04-2013
Messages : 1 090

Re : Peut - on battre le hasard ?

Petite coquille : il s'agit de 482, 762 et 772.
En effet, ce triplet gagne avec une probabilité de 76.2%.

En fait, le problème n'est plus vraiment un problème de probabilité mais plutôt de dénombrement.
La stratégie est simple, il faut choisir les 100triplets qui ont la probabilité maximale (pour maximiser une somme de termes tous positif, il faut maximiser chacun des termes).

Il faut donc arriver à bien comprendre la fonction de comparaison (qui n'est même pas une relation d'ordre partiel, il n'y a pas de transitivité). Par exemple, on aurait pu penser naïvement que (1,1007,1008) était le "plus fort" mais il n'est est rien (il est "battu" par des (2,2,2012), (2,3,2011) etc.).

J'ai pensé à un moment à une symétrie, genre le max est atteint par (672, 672, 672) mais ce n'est pas vérifié (proba de 66.57%).

Il faut donc prouver qu'il existe 100 triplets dont la proba moyenne est supérieure à 75% et comme on ne peut pas examiner de manière exhaustive tous les triplets, il faut arriver à réduire les vérifications nécessaire, en trouvant éventuellement des relations de symétrie.


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#28 25-07-2016 13:43:03

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : Peut - on battre le hasard ?

Re,

supérieure ou égale ...


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#29 25-07-2016 15:00:38

camille23
Invité

Re : Peut - on battre le hasard ?

re Bonjour,

J'avais fait comme l'explique Yassine
Petite erreur de frappe : mon triplet était 492, 762, 762
J'ai cherché des max dans des tranches de 40 triplets successifs, ces max se trouvent quand y=z ou z=y+1

#30 25-07-2016 15:32:54

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Peut - on battre le hasard ?

Bonjour,

/* mon analyse
La machine tire un nombre x1 < 2014
puis un nombre x2 < 2014 - x1
puis x3 = 2016 - x1 - x2
enfin on ordonne x1, x2, x3
l'homme défini y1=1 ; y2=1007 ; y3 = 1008
puis y1=2 ; y2=1007 ; y3=1007
puis y1=3 ; y2=1006 ; y3=1007
...
enfin y1=100 ; y2 = 958 ; y3 = 958
A chaque coup, on compare x2 :: y2 et x3 :: y3
*/

  randomize();
  int TgagneX=0;   // la machine
  int TgagneY=0;   // l'homme
  for (int fois=0; fois < 100; fois++)
  {
    int gagneX=0;
    int gagneY=0;
    for (int jeu=1; jeu<101; jeu++)
    {
      int x1=rand()%2016 +1;  // de 1 à 2016
      int r=2016-x1;
      r=max(r,2);
      int x2=rand()%r + 1;
      int x3=2016 - x1 - x2;
      if (x1>x2) { int x=x2; x2=x1; x1=x; }
      if (x1>x3) { int x=x3; x3=x1; x1=x; }
      if (x2>x3) { int x=x3; x3=x2; x2=x; }
      int y1=jeu;
      int y2, y3;
      if (jeu%2 == 1)  // jeu impair
      {
        y2=1008 - y1/2 -1;
        y3=1008 - y1/2 ;
      }
      else
      {
        y2=1008 - y1/2 ;
        y3=1008 - y1/2 ;
      }
      if (y2 > x2 && y3 > x3) gagneY++;
      else gagneX++;
    }
    TgagneX+=gagneX;
    TgagneY+=gagneY;
  }
  fprintf(espion," TgagneX = %d  TgagneY = %d\n",TgagneX, TgagneY);
}
 

Avec plusieurs essais, l'homme gagne avec au moins 83% et on ne devrait pas descendre en-dessous de 82.5%

Hors ligne

#31 25-07-2016 15:57:40

Yassine
Membre
Inscription : 09-04-2013
Messages : 1 090

Re : Peut - on battre le hasard ?

Attention à celles et ceux qui font des simulations
Tirer un triplets parmi des triplets non ordonnés et ordonner ensuite n'est pas équivalent à tirer un triplet parmi une liste de triplets déjà ordonnée.

Exemple triviale : tirer un couple parmi $(1,1),(1,2),(2,1),(2,2)$ et ordonner ensuite n'est pas la même chose que tirer un couple parmi $(1,1),(1,2),(2,2)$. Les probabilités n'ont rien à voir.


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#32 25-07-2016 16:39:13

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : Peut - on battre le hasard ?

Re,

je crois que tu as, avec yoshi, déjà listé tous les triplets possibles. Reste donc (le plus difficile ?) à trouver la liste constante des 100  triplets "humains" telle que, face à toutes les 100 autres listes possibles tirées au hasard, l'homme gagne au moins 3 fois sur 4.
Rappel : en cas d'égalité, la partie est déclarée nulle et on joue une nouvelle partie. Avec l'aide de l'informatique, ce ne devrait être qu'une petite question de code ?!?!
Donc c'est bien de la combinatoire qui, ensuite, se ramène à un calcul de probabilité, selon moi.


PS : Ok pour ta remarque sur la nécessaire distinction entre arrangement et combinaison.


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#33 25-07-2016 18:04:06

Yassine
Membre
Inscription : 09-04-2013
Messages : 1 090

Re : Peut - on battre le hasard ?

Les triplets à trouver sont ceux dont la probabilité de gagner est maximale (si on arrive à trier les triplets par ordre décroissant de probabilité de gain, alors il faut prendre les 100 premiers).

En théorie, ça serait faisable informatiquement, pour chaque triplet, on calcule le nombre de triplets qui sont plus faible que lui, on divise par le nombre total de triplet et on obtient la proba de gain qu'on insère dans une liste triée.
Malheureusement, si le calcul se fait en comparant le triplet en cours avec tous les autres, ça fait une double-boucle dont le nombre d'étapes est gigantesque ($338688^2 \approx 1,14e^{11}$). Je ne pense pas qu'une boucle de 100 milliard soit jouable.

Il faut donc, soit réduire le nombre de triplets candidats (selon un critère qui garantisse qu'on n'enlève pas les bons), soit qu'on trouve une formule qui donne, pour un triplet donné, le nombre de triplets qui lu sont inférieurs. C'est cette dernière voie que j'explore.


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#34 25-07-2016 18:28:37

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Peut - on battre le hasard ?

Re,

Yassine a écrit :

Je ne pense pas qu'une boucle de 100 milliards soit jouable.

Bin avant de poster mes idées, j'avais essayé...
Ca durait, ça durait...
Et je ne suis pas très patient, donc j'ai stoppé après disons 30 min
La machine avait exploré 338688 * 23000 (environ) étapes.
Mais je n'avais fait que des comparaisons, pas de calculs annexes, pas de stockage de résultats.

Donc si, c'est peut-être jouable, mais il faut de la patience (que je n'ai pas). Mais il est évident que Python, là,  n'est pas adapté : là ou il met 20 min, le C ne prend que quelques s...

@+
.


Arx Tarpeia Capitoli proxima...

Hors ligne

#35 25-07-2016 18:38:30

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : Peut - on battre le hasard ?

e,

je suis sur la même piste que toi !


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#36 25-07-2016 20:49:52

Yassine
Membre
Inscription : 09-04-2013
Messages : 1 090

Re : Peut - on battre le hasard ?

Je viens d'écrire un programme Python qui fait la boucle, j'ai activé le multithreading pour bénéficier des coeurs multiples des machines d'aujourd'hui.
J'ai mis un petit calcul du temps estimé, il m'affiche 19 jours !
Je mets ci-dessous le code si quelqu'un à une idée d'amélioration.
Sinon, pour faire un truc ludique, on pourrait se partager les plages à examiner, chacun postant le bout de résultat qu'il aura trouvé.


import random as r
from threading import Thread, RLock
import time
import sys
import datetime

nombre_de_threads = 5

def out_csv(l, fname):
  with open(fname, 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=';')
    for e in l:
      writer.writerow(e)

def get_triples():
  triples = []
  for i in range(1, int(2016/3) + 1):
    for j in range (i, int(0.5*(2016-i))+1):
      elt = (i,j,2016-i-j)
      triples.append(elt)
  return triples

def cmp_triple(a,b):
  return (a[0]>b[0] and a[1]>b[1]) or (a[0]>b[0] and a[2]>b[2]) or (a[1]>b[1] and a[2]>b[2])

def count_wins(a,lb):
  return sum([(1 if cmp_triple(a,b) else 0) for b in lb])
 

class Worker(Thread):
  def __init__(self, population, start_index, count, store,verrou):
    Thread.__init__(self)
    self.population = population
    self.start_index = start_index
    self.count = count
    self.store = store
    self.verrou = verrou

  def run(self):
    for i in range(self.start_index, self.start_index + self.count):
      r = (self.population, count_wins(self.population[i], self.population))
      with verrou:
        self.store.append(r)


population = get_triples()
threads = []
store = []
verrou = RLock()
count_total = len(population)
count = int(count_total/nombre_de_threads)
for i in range(nombre_de_threads):
  start_index = int(i*count)
  if i == nombre_de_threads-1:
    th_count = int(count_total - (nombre_de_threads-1)*count)
  else:
    th_count = count
  threads.append(Worker(population, start_index, count, store, verrou))


 
start_time = time.clock()

for i in range(nombre_de_threads):
  threads[i].start()

Finished = False
while not Finished:
  time.sleep(2)
  with verrou:
    Completed = len(store)
  if Completed == len(population):
    Finised=True
  else:
    duration = time.clock()
    estimated_remaining = (count_total-Completed)*Completed/duration
    duree = str(datetime.timedelta(seconds=duration))
    duree_restante = str(datetime.timedelta(seconds=estimated_remaining))
    print('\rTemps passé : {0}, temps restant estimé : {1}'.format(duree, duree_restante), end="")
   
out_csv(store, 'resultats_triplets.csv')
 


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#37 25-07-2016 21:42:04

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : Peut - on battre le hasard ?

Salut,

je pense qu'il faut trouver un principe de construction plus qu'une recherche informatique qui semble laborieuse.


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#38 26-07-2016 07:51:55

Yassine
Membre
Inscription : 09-04-2013
Messages : 1 090

Re : Peut - on battre le hasard ?

Salut,
Oui, je suis d'accord que c'est la voie à privilégier.


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#39 26-07-2016 18:06:59

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Peut - on battre le hasard ?

Re,

J'ai fait un test avec 32 au lieu de 2016...
Il y a 85 triplets.
75 % de 85 > 63.
J'ai tiré 32 fois un triplet au hasard sur les 85.
Puis j'ai cherché combien de triplets lui étaient supérieurs. Si on arrive à dégager une loi, on extrapolera pour 2016.
Résultats :
  Tirés           nombre de triplets supérieurs
(1, 2, 29)            69
(1, 3, 28)            67
(1, 4, 27)            65
(1, 1, 30)            70

J'ai répété l'opération une dizaine de fois, rien d'autre...

from time import time
import random as r

def g_triples():
    return [(i,j,32-i-j) for i in range(1, 17) for j in range (i, (32-i)//2+1)]
   
def cmp(a,b):
    return sum([1*(a<b) for a,b in zip(a,b)])


T=g_triples()
l=len(T)

for i in range(32):
    x= T[r.randint(0,l-1)]
    succes=0
    print(x,end=" ")
    for y in T:
        res=cmp(x,y)
        if res>=2:
            succes+=1
    if succes >int(l*0.75)+1 :
        print("--->  succes:",succes)
    print("\n")

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#40 27-07-2016 13:08:32

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Peut - on battre le hasard ?

Bonjour,
Je vais essayer d'expliquer mon raisonnement.
D'abord l'ordre des x1, x2 et x3. Il sont tels que x1 <= x2 <= x3 que la machine tire au hasard. On ne s'intéresse qu'au triplet résultat. La logique de tirage est telle que le triplet est dans cet ordre croissant et que la somme des x fasse 2016.
Concernant le choix du triplet par l'homme, la contrainte supplémentaire par rapport à la machine est que le même triplet ne doit être choisi qu'une seule fois.

La règne du jeu consiste à comparer xi à yi et xj à yj. Comme les x et les y sont en ordre croissant, il faut comparer x3 à y3 et x2 à y2.
En d'autres termes x1 et y1 sont ignorés puisqu'ils sont sans intérêt.
     
Je rappelle la méthode de calcul "humaine" que j'ai proposée.
La machine tire un nombre x1 < 2014
puis un nombre x2 < 2014 - x1
puis x3 = 2016 - x1 - x2
enfin on ordonne x1, x2, x3
l'homme défini y1=1 ; y2=1007 ; y3 = 1008
puis y1=2 ; y2=1007 ; y3=1007
puis y1=3 ; y2=1006 ; y3=1007
...
enfin y1=100 ; y2 = 958 ; y3 = 958
A chaque coup, on compare x2 :: y2 et x3 :: y3 

Pour que la machine gagne, il faut que x2 > y2 et x3 > y3
Les valeurs de y sont comprises entre 958 et 1008. Soit 50 valeurs
Les valeurs de x possibles sont comprises entre 672 ( 1/3 2016) 2016. Soit 1554 valeurs.
Cependant, comme  (x2+x3) <=2016, il faut que le maximum de x3 soit inférieur à (2016 - 672 = 1344). Le nombre de valeurs possibles est donc 1344 - 672 = 672.

On a vu que y2 = y3 ou y2 = y3+1.
Donc, à une unité près si x2 > y2 alors la machine gagne le coup.
Enfin, x2 et x3 peuvent être égaux, donc, la probabilité que la machine gagne est donc 50/672 * 2 ~ 0.148
Ce qui est effectivement inférieur = 25%.

Hors ligne

#41 28-07-2016 11:16:27

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : Peut - on battre le hasard ?

Salut,

j'ai une première piste, mais je n'atteins pas l'objectif.

j'ai bien les 338.688 triplets d'entiers strictement positifs [tex] (x,y,z)[/tex] dans le plan d'équation[tex] x+y+z = 2016[/tex]. Ils sont organisés comme suit : [tex]x[/tex] est compris entre 1 et 672, [tex]y[/tex] est compris entre [tex]x[/tex] et 672 et [tex]z[/tex] se déduit de l'équation du plan.

Donc je peux soutenir sans erreur que le triplet (1,1,2014) ne gagne jamais, tandis que le triplet (2,2,2012) gagne une seule fois.

De la même manière, je peux calculer que le triplet (672,672,672) bat 225.456 triplets dont les deux premières coordonnées lui sont strictement inférieures, soit un taux de réussite supérieur à 66 %.

De la même façon, le triplet (671,672,673) bat 224.785 triplets dont le deux premières coordonnées lui sont strictement inférieures, soit un taux de réussite supérieur à 66 %.

Mais, je n'arrive pas avec cette approche à trouver le moyen de battre au moins 3 fois sur 4 le tirage de la machine.
Faut continuer à chercher !

Dernière modification par freddy (28-07-2016 17:33:05)


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#42 29-07-2016 14:36:38

camille23
Invité

Re : Peut - on battre le hasard ?

Bonjour,

Intriguée par la définition "au hasard" des triplets, j'ai affiné ma recherche.

il peut sembler naturel de donner une probabilité égale aux 338688 triplets générés par Yassine 19-07-2016 22:01;08 et dont yoshi donne confirmation 21-07-2016 11:42:59.

En reprenant la définition de freddy :"trois nombres entiers positifs pas nécessairement distincts x1<=x2<=x3 tirés AU HASARD et dont la somme vaut x1+x2+x3=2016",
cela s'énonce :
"Définir sur un Ensemble d'objets dont le cardinal est 2016 des partitions équiprobables de trois sous-ensembles dont les trois cardinaux seront ordonnés en triplets x1<=x2<=x3"

Concrètement on découpe un cercle en 2016 intervalles et on choisit une origine à la séparation de deux intervalles. On choisit une des 2015 autres séparations de façon équiprobable, puis encore une des 2014 autres séparations libres.
On obtient ainsi 2015*2014 partitions équiprobables dont on tire des triplets ordonnés qui se produisent plusieurs fois :
2 fois pour le triplet x1=x2=x3
6 fois pour les 1006 triplets ayant seulement 2 valeurs égales
12 fois pour les 337681 triplets ayant leur 3 valeurs différentes
on retrouve bien 338688 triplets dont les probabilités ne sont pas égales en partant de l'équiprobabilité des 4058210 partitions possibles.

#43 30-07-2016 11:11:57

Yassine
Membre
Inscription : 09-04-2013
Messages : 1 090

Re : Peut - on battre le hasard ?

Bonjour,

Après quelques tentatives, j'ai fini par trouver un moyen pour bien compter les triplets.
Du coup, je poste pour le moment la "démonstration informatique" sous forme d'un code Python. Le code exhibe une liste de 100 triplets et montre que l'espérance du nombre de parties gagnées est > à 75.

Je posterai un peu plus tard les détails mathématiques de la méthode.


import time

SumNumber = 2016

def get_triples():
  return [(i,j,SumNumber-i-j) for i in range(1, SumNumber//3 + 1) for j in range (i, (SumNumber-i)//2+1)]

def is_lower(a,b):
  return (b[0]>a[0] and b[1]>a[1]) or (b[0]>a[0] and b[2]>a[2]) or (b[1]>a[1] and b[2]>a[2])

def get_lowers(a, population):
  return [x for x in population if is_lower(x,a)]

def compute_expectation(solution, population):
  count = len(population)
  return sum([len(get_lowers(x, population))/count for x in solution])

solution = [
  (466, 775, 775), (464, 776, 776), (468, 774, 774), (462, 777, 777), (470, 773, 773), (460, 778, 778), (472, 772, 772), (458, 779, 779), (474, 771, 771), (456, 780, 780),
  (476, 770, 770), (454, 781, 781), (478, 769, 769), (452, 782, 782), (465, 775, 776), (467, 774, 775), (463, 776, 777), (480, 768, 768), (469, 773, 774), (461, 777, 778),
  (471, 772, 773), (459, 778, 779), (450, 783, 783), (473, 771, 772), (457, 779, 780), (482, 767, 767), (475, 770, 771), (455, 780, 781), (448, 784, 784), (477, 769, 770),
  (484, 766, 766), (453, 781, 782), (479, 768, 769), (464, 775, 777), (466, 774, 776), (462, 776, 778), (446, 785, 785), (468, 773, 775), (451, 782, 783), (460, 777, 779),
  (486, 765, 765), (470, 772, 774), (458, 778, 780), (472, 771, 773), (481, 767, 768), (449, 783, 784), (456, 779, 781), (474, 770, 772), (444, 786, 786), (488, 764, 764),
  (454, 780, 782), (483, 766, 767), (476, 769, 771), (447, 784, 785), (452, 781, 783), (478, 768, 770), (442, 787, 787), (465, 774, 777), (463, 775, 778), (485, 765, 766),
  (467, 773, 776), (490, 763, 763), (461, 776, 779), (469, 772, 775), (450, 782, 784), (459, 777, 780), (445, 785, 786), (480, 767, 769), (471, 771, 774), (457, 778, 781),
  (473, 770, 773), (455, 779, 782), (487, 764, 765), (448, 783, 785), (440, 788, 788), (482, 766, 768), (492, 762, 762), (443, 786, 787), (475, 769, 772), (453, 780, 783),
  (446, 784, 786), (477, 768, 771), (451, 781, 784), (484, 765, 767), (489, 763, 764), (464, 774, 778), (462, 775, 779), (466, 773, 777), (438, 789, 789), (460, 776, 780),
  (441, 787, 788), (468, 772, 776), (479, 767, 770), (494, 761, 761), (458, 777, 781), (470, 771, 775), (449, 782, 785), (444, 785, 787), (456, 778, 782), (472, 770, 774)
]

start_time = time.clock()
population = get_triples()
expectation = compute_expectation(solution, population)
duration = time.clock() - start_time
print("Espérance = {0:.4} (temps de calcul : {1:.4}s)".format(expectation,duration))
 

Le programme produit l'affichage suivant :


Espérance = 76.65 (temps de calcul : 15.6s)
 

Dernière modification par Yassine (30-07-2016 11:12:34)


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#44 30-07-2016 11:21:01

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Peut - on battre le hasard ?

RE,

Clap ! clap ! Clap !

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#45 30-07-2016 18:34:57

Yassine
Membre
Inscription : 09-04-2013
Messages : 1 090

Re : Peut - on battre le hasard ?

Pour ceux qui sont intéressés, voici le lien pour lire le détail mathématique de ma méthode.


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#46 30-07-2016 21:35:11

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Peut - on battre le hasard ?

Bonsoir Yassine,
As-tu fait une vérification statistique ?

Hors ligne

#47 31-07-2016 11:26:06

Yassine
Membre
Inscription : 09-04-2013
Messages : 1 090

Re : Peut - on battre le hasard ?

Dlzlogic a écrit :

Bonsoir Yassine,
As-tu fait une vérification statistique ?

Bonjour,
J'ai du mal à comprendre tes interventions.
D'abord, je ne vois pas ce que serait une "vérification statistique" dans le cas présent. Au mieux, on pourrait parler d'une simulation à l'aide d'un générateur de nombre pseudo-aléatoires.
Ensuite, quand on démontre mathématiquement une propriété, on ne "vérifie pas statistiquement" la propriété ! Si on démontre la formule de Al-Kashi pour un triangle quelconque, on ne va pas tirer au hasard les coordonnées d'un triangle pour vérifier la formule ou faire le tour de la terre et vérifier à chaque triangle qu'on trouve la formule !!!
Ce que j'ai démontré, c'est un fait concernant des cardinaux d'ensembles particuliers. Je ne vois pas le début du commencement de l'ombre d'une vérification statistique ! De plus, la seule vertu d'une simulation serait de vérifier la qualité du générateur de nombres pseudo-aléatoires utilisé !


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#48 31-07-2016 13:25:43

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Peut - on battre le hasard ?

Bonjour Yassine,
Je ne recopie pas l'énoncé qui est parfaitement clair, mais je le résume.
1- une machine tire des nombres au hasard avec une certaine règle du jeu. On peut donc affirmer que le tirage est aléatoire.
2- un homme écrit des nombres avec une certaine règle du jeu.
L'énoncé précise clairement comment déterminer le vainqueur de la partie.
Le but de l'exercice est de démontrer que l'homme, puisqu'il a la liberté de choisir ses triplets, gagne sur la machine avec un score supérieur à 75. 

Concernant la qualité des générateurs de nombres aléatoires, je pense qu'on peut considérer que tant que le tirage est fait au coup par coup, c'est à dire autant d'appels à rand() que de nombres à produire, on peut tous les considérer de bonne qualité. Par ailleurs, il est assez facile de faire un générateur de nombres aléatoires basé sur l'écriture d'un nombre binaire de 11 digits, c'est à dire de 0 à 2048.
Je suppose que le tableau "resultat" contient les 100 triplets écrits par l'homme.

J'avoue que j'ai eu du mal à comprendre, tant ton code Python que ton PDF explicatif. 

Enfin, il serait peut-être intéressant de publier la correction de l'exercice, rédigée par son auteur.
Bonne journée.

Hors ligne

#49 31-07-2016 15:58:33

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Peut - on battre le hasard ?

Salut,

@dlz
Si par simulation, tu valides ce que j'ai compris de ta demande :

   je créee une variable succes et lui affecte la valeur 0.
    Et, 100 fois de suite,
    la machine tire au hasard un triplet parmi les 338688
    l'"homme" choisit au hasard l'un des 100 triplets solutions de Yassine
    comparaison du triplet "humain" et du triplet machine.
    si le 1er est supérieur au second, j'incrémente ma variable succes de 1
    au bout de 100 tirages, j'affiche la valeur de la variable succes...

    N-B J'ai réitéré la manœuvre 20 fois, puis 50 fois...
Après 20 essais, puis 50, je calcule et affiche la moyenne.
.

alors, voilà le Bilan :

>>>
Essai n°  1  de 100 tirages :  80  succès
Essai n°  2  de 100 tirages :  76  succès
Essai n°  3  de 100 tirages :  79  succès
Essai n°  4  de 100 tirages :  69  succès
Essai n°  5  de 100 tirages :  71  succès
Essai n°  6  de 100 tirages :  78  succès
Essai n°  7  de 100 tirages :  73  succès
Essai n°  8  de 100 tirages :  74  succès
Essai n°  9  de 100 tirages :  74  succès
Essai n° 10  de 100 tirages :  85  succès
Essai n° 11  de 100 tirages :  73  succès
Essai n° 12  de 100 tirages :  82  succès
Essai n° 13  de 100 tirages :  85  succès
Essai n° 14  de 100 tirages :  78  succès
Essai n° 15  de 100 tirages :  74  succès
Essai n° 16  de 100 tirages :  75  succès
Essai n° 17  de 100 tirages :  68  succès
Essai n° 18  de 100 tirages :  70  succès
Essai n° 19  de 100 tirages :  82  succès
Essai n° 20  de 100 tirages :  83  succès

--->  Moyenne : 76.45
>>> ===================================== RESTART =====================================
>>>
Essai n°  1  de 100 tirages :  74  succès
Essai n°  2  de 100 tirages :  76  succès
Essai n°  3  de 100 tirages :  68  succès
Essai n°  4  de 100 tirages :  82  succès
Essai n°  5  de 100 tirages :  74  succès
Essai n°  6  de 100 tirages :  81  succès
Essai n°  7  de 100 tirages :  83  succès
Essai n°  8  de 100 tirages :  78  succès
Essai n°  9  de 100 tirages :  82  succès
Essai n° 10  de 100 tirages :  77  succès
Essai n° 11  de 100 tirages :  81  succès
Essai n° 12  de 100 tirages :  81  succès
Essai n° 13  de 100 tirages :  74  succès
Essai n° 14  de 100 tirages :  79  succès
Essai n° 15  de 100 tirages :  77  succès
Essai n° 16  de 100 tirages :  82  succès
Essai n° 17  de 100 tirages :  81  succès
Essai n° 18  de 100 tirages :  76  succès
Essai n° 19  de 100 tirages :  83  succès
Essai n° 20  de 100 tirages :  76  succès
Essai n° 21  de 100 tirages :  77  succès
Essai n° 22  de 100 tirages :  80  succès
Essai n° 23  de 100 tirages :  77  succès
Essai n° 24  de 100 tirages :  77  succès
Essai n° 25  de 100 tirages :  73  succès
Essai n° 26  de 100 tirages :  82  succès
Essai n° 27  de 100 tirages :  78  succès
Essai n° 28  de 100 tirages :  76  succès
Essai n° 29  de 100 tirages :  72  succès
Essai n° 30  de 100 tirages :  80  succès
Essai n° 31  de 100 tirages :  79  succès
Essai n° 32  de 100 tirages :  74  succès
Essai n° 33  de 100 tirages :  74  succès
Essai n° 34  de 100 tirages :  78  succès
Essai n° 35  de 100 tirages :  74  succès
Essai n° 36  de 100 tirages :  79  succès
Essai n° 37  de 100 tirages :  73  succès
Essai n° 38  de 100 tirages :  75  succès
Essai n° 39  de 100 tirages :  80  succès
Essai n° 40  de 100 tirages :  73  succès
Essai n° 41  de 100 tirages :  76  succès
Essai n° 42  de 100 tirages :  74  succès
Essai n° 43  de 100 tirages :  76  succès
Essai n° 44  de 100 tirages :  79  succès
Essai n° 45  de 100 tirages :  71  succès
Essai n° 46  de 100 tirages :  77  succès
Essai n° 47  de 100 tirages :  77  succès
Essai n° 48  de 100 tirages :  85  succès
Essai n° 49  de 100 tirages :  68  succès
Essai n° 50  de 100 tirages :  81  succès

--->  Moyenne : 77.2

Enfin, il serait peut-être intéressant de publier la correction de l'exercice, rédigée par son auteur.

Si la demande est adressée à Yassine, il y a erreur de destinataire, c'est freddy qui a posé le sujet...

Enfin, il semble que ta proposition de calcul (en C) soit battue en brèche par celle de Yassine, lui tient compte du 1er élément de chaque triplet...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#50 31-07-2016 18:34:53

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Peut - on battre le hasard ?

Bonjour Yoshi,
On peut voir le code de ta simulation ?
Pour la dernière phrase, concernant la solution officielle à l'exercice, pardon, j'ai oublié de rajouter "@Freddy"
Oui, je crois que j'ai compris ce que tu veux dire.
Le groupe machine (480, 768, 768) gagne sur le groupe homme (479, 767, 770). Ok.
C'est à dire que l'on peut trouver 100 triplets tels que l'homme gagne à juste un peu plus que 75 parties sur 100. Personnellement, j'ai préféré un gain plus sûr, c'est à dire 85 pour 100.
Par ailleurs, l'intervention de Camille a mis un doute dans mon esprit sur le nombre de triplets possibles. J'ai donc préféré raisonner autrement.
Le premier élément du triplet, l'homme le minimise pour assurer le coup, dans ma méthode.
Bonne soirée.

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt six moins sept
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums