Géométriquement le forum Dlz9
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -40%
-40% sur le Pack Gaming Mario PDP Manette filaire + ...
Voir le deal
29.99 €

Aller en bas
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Mer 27 Juil - 17:11
Pour le voir, il faut analyser ce qu'on fait.
1- on met dans la machine 100 paires de chaussettes.
2- une fois la lessive faite, on met les chaussettes dans le sac, c'est la ligne "copie", on l'appelle Aetendre
3- on tire au hasard un truc qu'on appelle "chaussette" et qui est une partie de Aetendre. Informatiquement c'est une ligne du tableau Aetendre, donc c'est une paire.
4- on teste [je sais pas quoi]
5- on supprime de la liste la ligne qu'on tirée, c'est à dire une paire du sac.
6- On recommence au point 3 jusqu'à ce que le sac soit vide

Pour expliquer simplement : on plonge la main dans le sac N fois, c'est à dire le nombre de paires.
Il me semble que on teste le pied gauche, mais cette logique de Python m'échappe.
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Mer 27 Juil - 17:45
Bon, Gbzm a commenté son code. Mais il n'y a aucune impression intermédiaire, c'est à dire qu'on ne sait pas si on étend toutes les chaussettes.
Il n'est pas utile de faire 1000 lessives de 1000 paires. 10 lessives de 8 paire est largement suffisant si on prend soin de faire des impression intermédiaires. C'est à dire imprimer le nom de la paire, sous forme d'une lettre.
L'instruction "copy" est maintenant "pop".
L'objet "chaussette" est une paire ou une chaussette ?
La ligne contenant l'instruction "remove" a disparu.
Quitte à me répéter, tant qu'on n'aura pas la liste des chaussettes dans l'ordre de leur sortie du sac, on tournera en rond.
De toute façon, le code n'est pas clair.
Lessive est un tableau 100x2
Si on copie lessive dans Aetendre, on peut s'attendre à avoir un tableau. Si ce n'est pas le cas, mais une liste, alors évidemment je n'ai pas compris.
Il est possible que l'instruction "shuffle" consiste à mélanges, mais on mélange quoi, les paires ou les chaussettes ?

C'est tout de même dommage de pas réussir à être d'accord.
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Mer 27 Juil - 18:58
Pierre,
la liste de départ est un tableau 100 rangées 2 colonnes
qui numérote les rangées le type de paire il y en a 100 , et deux chaussettes la gauche en colonne de gauche la chaussette droite en colonne de droite.
On a ainsi 200 chaussettes différentes, et 100 paires différentes bien identifiées.

Mais lorsque l'on étend les chaussettes cela enlève des éléments du tableau, et en plus on se fiche ensuite d'où sont les chaussettes puisqu'on les prend au hasard,
donc le bac à linge contient les chaussettes restantes a étendre dans une liste qui n'a pas besoin d'etre un tableau, le reste à étendre est une liste banale.

Sinon GBZM a pointé l'erreur possible que tu aurais fait dans ton code.
Tu as été voir?

PS: je vais regarder le code expliqué par GBZM, qu'il en soit remercié de l'avoir explicité,
mais je doute que cela soit suffisant (pour moi) quand on ne connait pas bien l'indexation,
par exemple le [0] est le premier élément d'une liste existante, ou le premier élement d'une liste en construction mais cela reste mystérieux
idem que l'on parle de la meme paire est par reconnaissance d'un meme i rangée ? mais cela n'apparait pas pour qui ne connait pas assez pailletonne!
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Mer 27 Juil - 20:13
Bonsoir,
J'ai refait le calcul avec une méthode différente, plus facile à comprendre.
A demain.

Bien, avec cette autre méthode j'obtiens effectivement environ 36% de cas avec 10 paires de chaussettes où on n'a pas deux chaussettes de la même paire côté à côte.
Je vais essayer de comprendre le problème dans mon premier calcul. C'est mon problème.
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Jeu 28 Juil - 10:37
Merci à GBZM d'avoir pris le temps d'expliciter le code
Donc pour Pierre
les chaussettes sont de meme paire pour un meme i, et il ya deux j pour faire la paire
donc lessive est une liste bien ordonnée pour connaitre les chaussettes par leur (i,j)

Ensuite dans Aetendre on copie les elements de lessive et on mélange rd.shuffle
Cette liste là contient les chaussettes mais pas en tableau (parce que inutile et aussi parce qu'on enlève les élements donc bonjour le tableau

ensuite que fait l'instruction  pop:
pop permet d'enlever un élément = une chaussette donc A étendre sera amputer de cet élément
et pop retourne la valeur enlevée donc intéressant puis qu'on l'utilise cette valeur rerournée pour comparer à la derniere chaussette étendue
derniere commence à -1 et ne pourra donc pas etre égale la premiere chaussette

Il me manque encore de comprendre comment la valeur de la chaussette qui est un i,j se compare uniquement sur le i ?
si[0] signifie premier élement de la liste ou alors cela signifie lélement i de la valeur, hum pas bien compris
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Jeu 28 Juil - 11:56
Bonjour Beagle,
En informatique, mais c'était vrai autrefois, on écrivait un algorithme. Il y avait différentes méthodes, le français courant, l'organigramme avec rectangles, losanges, cylindres etc. Ces méthodes sont oubliées, maintenant on écrit le code directement. Il est vrai que depuis quelques décennies, les capacités des étudiants se sont considérablement améliorées, donc, ils ont tout dans la tête au moment de taper le premier mot de code.
En ce qui ne concerne, j'ai résolu mon problème;

Oui, c'est vrai, je n'ai pas compris le code de Gbzm, pour la simple raison que je ne sais pas ce que font les fonctions.
Je remarque par ailleurs qui n'a même pas cherché à comprendre pourquoi j'obtenais des résultats qui ne correspondaient pas
En informatique, ce qu'il faut comprendre, c'est l'algorithme, un code ne se comprend pas, il se lit. S'il est écrit dans un langage non connu, alors le travail de traduction est énorme et il faut un dictionnaire.
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Jeu 28 Juil - 12:34
"Je remarque par ailleurs qui n'a même pas cherché à comprendre pourquoi j'obtenais des résultats qui ne correspondaient pas"

Celle là est forte de café!

D'abord pour te répondre il aurait fallu connaitre ton code à toi.

Et en plus sur les infos que tu as donné il a trouvé une erreur:
"J'ai commenté le code pour faciliter la compréhension d'un lecteur assidu qui avait interprété le précédent code de travers. Il n'est pas évident qu'il comprendra mieux cette fois-ci.
Ce même lecteur assidu s'est lancé dans une simulation erronée : pour l'étendage il tire au hasard (de manière uniforme) le n° de la paire de la prochaine chaussette. Ça ne va bien sûr pas du tout. Si on part avec 10 paires numérotées de 0 à 9 et qu'on tire une première chaussette de la paire n° 0, alors pour la deuxième chaussette on n'aura plus qu'une chance sur 19 (et pas une chance sur 10) de tirer de nouveau une chaussette de la paire n°0 : dans le bac à étendre qui contient 19 chaussettes, il n'en reste plus qu'une de n°0 ! Avec ce genre de simulation conçue de travers, pas étonnant qu'on ne trouve pas de résultat conforme à ce qui a été démontré dans ce fil !"
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Jeu 28 Juil - 12:42
Bon, c'est pas faux.
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 13:05
Si GBZM repasse par ici,
j'ai toujours pas compris comment on reconnait deux chaussettes identiques.

J'ai essayé sur l'excellent site pour débutant pythontutor.com
M=[(i,j) for i in range (4) for j in range (2)]
comme pour les boucles imbriquées on fait i =0 j=0, i=0 j=1, puis i passe à 1 j=0, puis i=1 j passe à1
ok
Cela donne un tupple?, une liste qui est:
M=[(0,0), (0,1),(1,0),(1,1),(2,0),(2,1),(3,0),(3,1)]
maintenant si je tape print(M[0]) j'obtiens bien le premier élément de la liste: (0,0)

donc comment on fait pour dire (0,1) chaussette droite est de meme paire que (0,0) chaussette gauche , meme paire = meme rangée ?
J'imaginais que l'indexation appelait juste la rangée pour l'égalité, mais je ne vois pas cela.

bref, comment est-il dit dans le code : c'est la meme paire?
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 14:13
Bonjour Beagle.
Là tu poses une question bien compliquée. Elle est liée à deux choses, le rangement en mémoire des termes d'un tableau. Il y a deux façons de ranger les valeurs d'un tableau en mémoire. soit comme tu l'as écrit, en d'autres termes, on commence par la première ligne, puis la seconde etc. soit on commence par les chaussettes gauche, puis on met les chaussette droites. Cela a déjà été fait.
Le seconde chose, on a un nom qui désigne un tableau et un autre nom qui désigne la liste des valeurs du tableau que la machine a mémorisé, dans l'ordre que celle-ci a décidé. Je ne sais pas si c'est compréhensible pour un non-informaticien, mais c'est totalement incompréhensible pour un informaticien, puisqu'il n'y a pas de déclaration de type.

Concernant mon algorithme, je me fiche de savoir si une chaussette a été tirée du sac, si ce sont des chaussettes, je cherche à savoir le probabilité d'avoir deux fois consécutives la même couleur. Point important, je ne distingue pas la chaussette gauche de la chaussette droite comme Gbzm, je sais simplement que j'ai une paire de chaque couleur. C'est l'inverse d'une pièce de monnaie où il n'y a que 2 faces mais un certain nombre de pièces.
Imaginons que les possesseurs de chaussettes soient des martiens qui comme chacun sait ont trois pieds, le code serait le même, simplement on testerait si on a 3 fois en suivant le même couleur.
La raison pour laquelle mon premier code donne un autre résultat est, sauf erreur, d'un tout autre ordre.

C'est une question intéressante sur le plan informatique et ça se termine en argument d'autorité (et je suis mesuré). Dommage.
De toute façon, Gbzm sait très bien qu'il peut intervenir. (flemme de regarder si il est simplement "inactif" ou "banni").
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 14:29
Je comprends ce que tu dis,
dans matlab on peut ranger dans des matrices, donc rangée+colonne donne un élement,
mais matlab les connait par ordre de la matrice, il numérote de 1 à n rangées la premiere colonne puis il numérote la deuxième colonne de n+1 à 2n etc...
On peut lui demander un élement de matrice par les deux façons.

Pour le moment je ne comprends pas ce qu'est égal ou inégal, sauf si les deux chaussettes mem paire ont meme reference,
mais alors pourquoi i,j ???
Wait.

Je pense avoir le temps de revoir mon code matlab, si les frequences observées sont confirmées correcte, je montrerai le code sur le site
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 15:14
Bon, je vais prendre mon courage à deux mains et transposer "exactement" le code de Gbzm.

Dans la tradition et je crois qu'elle est toujours respectée par tous les langages, soir un tableau T, l'ordre des valeurs est toujours T(ligne, colonne). En mémoire, un tableau n'existe pas pas, c'est toujours une liste donc T(il, jc) = début + il * nbcolonnes + jc .
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 16:14
Bon alors 1 million de tirages n= 100 paires:
366880 favorables
633120 défavorables
je pense que le programme est bon!

J'ai des courses a faire et je mets le code.
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 16:39
Pourquoi faire autant d'essais, la théorie des probabilités est basée sur la loi des grands nombres. C'est à dire que le résultat d'un sondage est très proche du résultat du calcul sur la totalité. Bref, c'est un détail.
Concernant le problème des chaussettes, je suis d'accord sur un résultat de 36%.

Par contre, ce qui m'intéresse, c'est le calcul informatique.
J'ai essayé de transposer le code de Gbzm, je bloque sur la première ligne
Lessive=[(i,j) for i in range(n) for j in range(2)]
On peut supposer que Lessive est un tableau de n liges et 2 colonnes. Soit 2n valeurs numériques.
Mais, je ne suis pas sûr de ça du tout, j'ai lu ce que j'ai pu trouver comme doc.
En l'absence d'impressions intermédiaires, on ne peut rien voir du tout.
Si je ne peux pas comprendre cette ligne, je ne peux pas comprendre la suite.
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 16:48
Salut Pierre, j'ai répondu ce matin à ce qu'était le début du programme de GBZM
relis le

Pour le 1 million, j'ai juste forcé l'ordinateur à réfléchir un peu avant de répondre.
Quand je bossais les maths avec ma fille cela m'énervait qu'elle réponde instantanément pour les moments où c'était faux!!
Donc avec 1000 tirages matlab répond sans réfléchir, m'a énervé quoi !
Au moins quelques secondes que j'ai l'impression qu'il n'ai pas consulté une réponse déjà connue de lui.
Respecter l'humain un peu quand mème!
Quand je joue aux échecs c'est pareil, il pourrait faire semblant de réfléchir quand meme, non?
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 17:08
Donc voici le programme matlab, enfin juste la partie pour une analyse,
j'ai pas mis l'itération pour compter favorables et défavorables.

.....................................................................
%n= paires chaussettes ; l=liste
l=[1:n,1:n];

%créer liste aleatoire = une permutation de l
%générer un vecteur permutation qui sera l'index
idx=randperm(2*n);
%réarranger la liste avec cet index
l=l(idx);

%cas favorables ou non
%deux nombres identiques cote à cote, équivalent soustraction = 0
S = [0,l] - [l,0];
%recherche de zeros dans soustraction
%par sum(S==0), somme de tous les zeros
sum(S==0);
%ou par all(S), booléen 0 si il ya un zero, ou valeur 1 si pas de zéro
%all(S)

.............................................................................................
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 17:11
Oui, bien-sûr, j'ai fait le même raisonnement que toi :
Code:
M=[(i,j) for i in range (4) for j in range (2)]
comme pour les boucles imbriquées on fait i =0 j=0, i=0 j=1, puis i passe à 1 j=0, puis i=1 j passe à1
ok
Cela donne un tupple?, une liste qui est:
M=[(0,0), (0,1),(1,0),(1,1),(2,0),(2,1),(3,0),(3,1)]
maintenant si je tape print(M[0]) j'obtiens bien le premier élément de la liste: (0,0)
Donc la nième ligne vaut [n,0] et [n,1] C'est ça qui m'échappe. Pourquoi stocker un rang sous forme de valeur ?
... Ton nouveau message est arrivé.
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 17:14
Bon alors l dans programme avec des zeros c'est pas génial on dirait des 1, je ferai plus.

Ensuite le compteur
l'idéal était avec la fonction all() qui donne zero si zero et 1 en l'absence de zero.
Oui MAIS cela retourne un bouléen, et ilfaudrait passer de logistic à numéric
pas dur dit matlab on met double(all())
oui MAIS matalb dit qu'il veut un toolbox le DSP system toolbox et ça doit ètre un truc à racheté ça. Ah vilain matlab!Vilain!
donc j'ai fait avec le sum des zeros et cela oblige a faire un si somme alors favorable ou non.
D'un autre coté je suis sur que Pierre récupèrerait les sommes de zeros pour un histogramme, non?, allez !
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 17:30
Pour la liste de GBZM
je te conseille pythontutor
tu mets
1 M=[(i,j) for i in range(4) for j in range(2)]
2 N=M.copy()
3 print(N)

et tu comprendras que la liste copiée comprend deux élements chaussettes  zeros faisant reference au tupple (0,1) et (0,0) deux chaussettes différentes,
cela donne la meme ref aux chaussettes de meme rangée = paire dans le tupple i,j
ouf
bon ben faut connaitre
et c'est balaise mais ici un peu compliqué je trouve
quelle utilité ????
cela s'éclaircit quand meme !

N'empèche pythontutor c'est le stade au-dessus du débug des IDE python.
Vraiment extra pour les débutants qui commencent au départ !!!!
Dlzlogic
Dlzlogic
Admin
Messages : 9505
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 17:33
Bon, alors je résume.
J'ai fait un premier code qui me donne un résultat d'environ 10%. J'ai dit ce que je trouvais, mais je n'ai pas fait de jugement de valeur.
Puis j'ai fait une autre méthode, : on met les chaussettes dans la machine, elles se mélangent et après on regarde si deux chaussettes de la même paire se suivent.
Pour être plus clair, avant la lessive, il y a 1122334455 etc.
Après la lessive, il y a 43512153 ... et je regarde si deux pareilles se suivent, c'est à dire ce que tu fais avec Matlab.
avatar
beagle
Messages : 3696
Date d'inscription : 29/06/2019

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Ven 29 Juil - 17:45
Nous sommes d'accord.
Contenu sponsorisé

Ben et ses chaussettes. - Page 3 Empty Re: Ben et ses chaussettes.

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum