|
#26 - 15-11-2013 17:32:03
- gilles355
- Professionnel de Prise2Tete
- Enigmes résolues : 49
- Messages : 421
promenons-nous dans lr train
Je viens de relire ton énoncé et je n'avais pas vu que le voyageur changeait de wagon toutes les minutes, je pensais tous les jours.
En plus je comptais 20 min le temps minimum alors que c'était 19 minutes.
Donc le temps moyen serait donc de 104 minutes.
Si je continue jusqu'à plus de 1000 c'est à dire 1045 minutes , la somme des probas dépasse 1, je trouve 10,92823.
En faisant la moyenne je trouve dans ce cas 554 minutes ...
#27 - 15-11-2013 18:43:27
- NickBern
- Passionné de Prise2Tete
- Enigmes résolues : 45
- Messages : 50
romenons-nous dans le train
C'est ma première résolution sur le fofo !
Alors j'ai créé un programme avec : - un tableau de 20 cases, valeurs de 0 à 1 (donc au départ un 1 et dix-neuf 0). - une fonction qui prend (case i-1)/2 + (case i+1)/2 et la stocke dans (case i) (sauf les wagons extrêmes où il faut adapter un peu...). Donc cette fonction simule 1 minute de temps de jeu. - dans le main : un compteur incrémenté à chaque tour (le chrono) ; et une variable qui, à chaque appel de la fonction, se voit incrémentée du produit "nombre de nouveaux passagers arrivés dans le wagon 20 à cette étape" par "moment où ils arrivent" (c'est-à-dire le chrono), cette variable nous donneras donc la moyenne recherchée !!
Y'a donc plus qu'à lancer en boucle infinie et à observer : Spoiler : [Afficher le message] on voit alors la moyenne grossir à chaque ligne, puis se stabiliser à 361.988 minutes, soit un peu plus de 6 heures !
(si c'est la bonne réponse je passerai évidemment le programme à qui veut, une fois l'énigme ouverte)
En tout cas merci pour cette devinette bien P2T
#28 - 15-11-2013 18:53:41
- nodgim
- Elite de Prise2Tete
- Enigmes résolues : 0
- Messages : 3802
promenons-noud dans le train
L'algorithme que j'ai construit repose sur un tableur de 20 colonnes , chacune d'elles représente 1 wagon. La proba de se trouver dans un wagon W donné à la n ième minute est donnée par la formule: Pn(W)=(P(n-1)(W-1)+P(n-2)(W+1))/2. Pour le wagon 1: Pn(1)=P(n-1)2/2 Pour le wagon 20: Pn(20)=P(n-1)19/2 Pour le wagon 2: Pn(2)=P(n-1)1+P(n-1)3/2. Pour le wagon 19: Pn(19)=P(n-1)20+P(n-1)18/2.
Je cumule ensuite les Pn(20) avec la formule: S(n+1)20=Sn20+(1-Sn20)*P(n+1)20.
C'est quand Sn atteint 0.5 que je dis que c'est le temps moyen pour arriver au wagon 20.
Mais bon, ce n'est peut être pas la bonne méthode...
#29 - 15-11-2013 19:37:31
- Papy04
- Ricocheur en Chef
- Enigmes résolues : 47
- Messages : 1309
promenons-nous dans le rrain
Je n'ai jamais aimé les probabilités mais je vais tenter une réponse. Le temps le plus court pour arriver au wagon n°20 est de 19 minutes. Si il alterne parfaitement les "pile" et les "face", il ne va pas plus loin que le wagon n°3 et met donc un temps infini. A la louche, donc la moyenne des parcours possibles serait de (19 + infini)/2 ce qui ne doit pas être loin de l'infini. J'espère qu'il n'est pas pressé Mais bon, en général je me plante dans les grandes largeurs sur ce genre de problème alors j'attends la solution avec curiosité
Les gens n'acceptent jamais leurs défauts. Moi je le ferais si j'en avais!
#30 - 15-11-2013 23:23:02
- Franky1103
- Elite de Prise2Tete
- Enigmes résolues : 49
- Messages : 3222
- Lieu: Luxembourg
Promenons-nous dans le trrain
Je tente une démonstration plus rigoureuse, en laissant tomber cette histoire de mouvement brownien, revu par Einstein, juste mais lourd à digérer. J’appelle t(i) le temps mis en moyenne pour atteindre le wagon numéro i. On a trivialement: t(1) = 0 et t(2) = 1. Calculons maintenant t(n+1), en fonction des termes précédents. Je suis dans le n-ième wagon; pour passer dans le wagon suivant (ou précédent), je mettrai une durée de 1, multipliée par la probabilité de 0,5; il me reste à ajouter la durée pour passer du wagon précédent au suivant qui est de: t(n+1) - t(n-1), à multiplier par 0,5 (comme je suis remonté de 1, il faut redescendre de 2). J’ai donc: t(n+1) = t(n) + 0,5.1 + 0,5.1 + 0,5.[t(n+1) - t(n-1)], ce qui donne: t(n+1) = 2 + 2.t(n) - t(n-1) Cette suite introduite dans un tableau Excel donne la solution: t(n)=(n-1)², et on vérifie en effet aisément que: 2 + 2.(n-1)² - (n-2)² = n² Donc: t(20) = 19² = 361 mn = 6 h 01 mn. Et voilà.
#31 - 16-11-2013 00:26:38
- fix33
- Elite de Prise2Tete
- Enigmes résolues : 48
- Messages : 1198
- Lieu: Devant un clavier depuis 1748
Promenonss-nous dans le train
Je ne vien sur se site que pour faire croir que je suis treise intélligens.
#32 - 16-11-2013 00:34:00
- titoufred
- Elite de Prise2Tete
- Enigmes résolues : 20
- Messages : 1749
Proomenons-nous dans le train
@gilles : je pense que si la somme des probas dépasse 10, il y a un problème quelque part. Tu n'es pourtant plus très loin avec ta 2ème estimation.
@nickBern : Très bonne estimation, bravo ! Tu peux poster ton programme ?
@nodgim : pas d'accord avec quelques formules. Par exemple, de 20 on ne retourne pas en 19. De plus tu calcules le temps médian de la promenade et non le temps moyen.
@papy : tu prends 2 séries possibles de PILE ou FACE parmi tellement d'autres... Pourquoi celles-là ? La moyenne se fait sur toutes les séries possibles.
@Franky : Très bonne démonstration. Tu es le seul pour l'instant à en avoir exposé une valable. Un grand bravo !
@masab : Quel est ton raisonnement ?
@fix : Oui, bravo, c'est le bon résultat. Tu partages ton raisonnement ?
#33 - 16-11-2013 11:09:09
Proomenons-nous dans le train
environ 6 heures :
(les probas, c'est trop compliqué )
var wagon = 1; var nbTour = 0; var moy = 0.0; for(var i = 0; i < 100000; i++){ nbTour = 0; wagon = 1; while (wagon != 20){ if (wagon == 1) { wagon ++; } else if (Math.random() >0.5){ wagon++; } else { wagon --; } nbTour ++; } moy += nbTour; } document.getElementById("demo").innerHTML=moy/i;
#34 - 16-11-2013 11:57:28
- titoufred
- Elite de Prise2Tete
- Enigmes résolues : 20
- Messages : 1749
promenons-nous dans le yrain
Oui, c'est à peu près ça, bravo. C'est quoi comme langage ? Comment on peut le faire tourner ?
#35 - 16-11-2013 12:20:04
Promenons-nous dans le trin
C'est du JavaScript (lent, mais pas besoin de compilo, 1 simple navigateur suffit ) - au fait, la question ne s'affiche pas..
à enregistrer dans un .html <!DOCTYPE html> <html> <body>
<p id="demo">Click the button to display a the result.</p>
<button onclick="myFunction()">Try it</button>
<script> function myFunction() {
var wagon = 1; var nbTour = 0; var moy = 0.0; for(var i = 0; i < 100000; i++){ nbTour = 0; wagon = 1; while (wagon != 20){ if (wagon == 1) { wagon ++; } else if (Math.random() >0.5){ wagon++; } else { wagon --; } nbTour ++; } moy += nbTour; } document.getElementById("demo").innerHTML=moy/i; } </script>
</body> </html>
#36 - 16-11-2013 12:37:12
- NickBern
- Passionné de Prise2Tete
- Enigmes résolues : 45
- Messages : 50
Promenons-nous dans le trai
Voilà le code (c) :
#include <stdio.h> #include <string.h>
// la fonction, simule une minute : void avance (float train[20]) { int i; float data[20];
// copie en temp : for (i=0; i<20; i++) { data[i] = train[i]; }
// modifie tous les wagons : train[0] = (data[1] /2); train[1] = data[0] + (data[2] /2); for (i=2; i<=17 ; i++) { train[i] = (data[i-1] /2) + (data[i+1] /2); } train[18] = (data[17] /2); train[19] += (data[18] /2);
// affichage : printf(" dans wagon 20 : %.f", train[19]); }
int main() { int time = 0; float train[20] = {1}, previous, temps_moy = 0;
// avance rapide (ctrl-C pour stopper) : do { // incrémente chrono : time ++; printf("\n [%d min]", time);
// proba d'être arrivé : temps_moy += time * (train[19] - previous); // stocke valeur pour utilisation au prochain tour de boucle : previous = train[19];
avance(train); printf(" temps_moy : %.3f", temps_moy); } while (1); // ou "while(train[19]< ... )" en mettant la précision voulue
return 0; }
#37 - 16-11-2013 13:01:34
- titoufred
- Elite de Prise2Tete
- Enigmes résolues : 20
- Messages : 1749
promenons-noud dans le train
Ok NickBern merci.
Il y a une petite erreur dans ton programme, tu dois incrémenter time en toute fin de boucle while par exemple.
#38 - 16-11-2013 14:21:30
- Promath-
- Elite de Prise2Tete
- Enigmes résolues : 18
- Messages : 1416
- Lieu: Au fond de l'univers
Promenonsn-ous dans le train
Longtemps.
Non sérieux ça doit faire du 2^18 minutes??? Je ne sais pas, à la louche je dirais ça.
Un promath- actif dans un forum actif
#39 - 16-11-2013 14:57:29
- w9Lyl6n
- Professionnel de Prise2Tete
- Enigmes résolues : 26
- Messages : 220
Promenons-nous danss le train
Sans changer le temps moyen on peut imaginer un problème similaire où le train comporte 39 wagons et on par du 20eme pour atteindre l'une où l'autre des extrémités.
Le nombre de déplacement vers l'avant suit une loi binomiale en fonction du nombre de déplacement, donc l'écart type est [latex]\sqrt{n}[/latex] où n est le nombre de déplacement.
On peut conjecturer rapidement qu'il faut 19²=361 minutes en moyenne pour atteindre un bout du train.
Comme je ne suis pas assez fort en proba pour savoir si éloignement moyen à n donné et n moyen pour atteindre un éloignement donné sont identiques, j'ai posé proprement le calcul: Si on pose [latex]t_k[/latex] le temps moyen depuis le wagon k pour atteindre le wagon 20: [TeX]t_1=1+t_2[/TeX] [TeX]t_k=\frac{1}{2}t_{k+1}+\frac{1}{2}t_{k-1}+1[/TeX] [TeX]t_{20}=0[/TeX] En résolvant ce système je retombe sur ma conjecture. Donc sauf erreur de ma part il faut en moyenne 6 heure et une minute
#40 - 16-11-2013 15:09:24
- titoufred
- Elite de Prise2Tete
- Enigmes résolues : 20
- Messages : 1749
Promenons-nous dans le traain
Oui bravo Mathieu ! J'ai raisonné comme toi avec les [latex]t_k[/latex]
#41 - 16-11-2013 15:24:01
- titoufred
- Elite de Prise2Tete
- Enigmes résolues : 20
- Messages : 1749
Pormenons-nous dans le train
MthS-MlndN a écrit:Si j'ai une chance sur deux de réussir quelque chose à chaque tentative, j'y arriverai en moyenne la deuxième fois.
Oui, très bon début ! C'est après que ça ne va pas. Admettons que tu veuilles aller en 4. Tu dois aller en 3 et te foirer mais après tu ne repars pas de 1, tu te trouves déjà en 2...
@kossi_tg : tu peux justifier proprement ton hypothèse de mouvement oscillatoire avec la façon de voir de Mathias.
PS : Vos différents points de vue à tous sont vraiment très enrichissants pour moi, merci.
#42 - 16-11-2013 15:37:19
- enigmatus
- Expert de Prise2Tete
- Enigmes résolues : 0
- Messages : 561
Promenons-nouus dans le train
Je dirais 361 minutes, soit 6 heures et 1 minute (19**2)
#43 - 16-11-2013 15:46:31
- fix33
- Elite de Prise2Tete
- Enigmes résolues : 48
- Messages : 1198
- Lieu: Devant un clavier depuis 1748
Promenons-nous dns le train
Pour atteindre le wagon n : - on a une proba de [latex]\frac{1}{2^{n-2}}\[/latex] pour l'atteindre en (n-1) minutes. - on a une proba de [latex]\frac{1}{2^{n}}\ + \frac{1}{2^{n-1}}\[/latex], soit [latex]\frac{3}{2^{n}}\[/latex] pour l'atteindre en (n+1) minutes. - on a une proba de [latex]\frac{1}{2^{n+2}}\ + \frac{n-3}{2^{n+1}} + \frac{1}{2^{n}}\[/latex], soit [latex]\frac{2n-1}{2^{n+2}}\[/latex] pour l'atteindre en (n+3) minutes.
Je trouve au final pour w wagons (mais j'ai de sérieux doutes, sans pouvoir confirmer par Wolfram ou autre) : [latex]\sum\nolimits_{n=0}^{\infty}(\frac{(2n+w-2)*\sum\nolimits_{k=0}^{\infty}(2^k*C_{w-3}^k)}{2^{2n+w+1}})\[/latex] qui vaudrait [latex](w-1)^2[/latex] ?!
Donc pour 20 wagons : 361 minutes, 6h01min.
Je ne vien sur se site que pour faire croir que je suis treise intélligens.
#44 - 16-11-2013 16:56:59
- elpafio
- Elite de Prise2Tete
- Enigmes résolues : 43
- Messages : 1015
promenons-nous dzns le train
Et, en moyenne, parce que 6 heures c'est long, il faut aussi compter 5 à 10 minutes de plus lors du passage dans la voiture-bar
#45 - 16-11-2013 17:14:16
- titoufred
- Elite de Prise2Tete
- Enigmes résolues : 20
- Messages : 1749
Promenons-nous dans le tarin
Il fallait donc trouver 6 heures et 1 minute.
Bravo à tous ceux qui ont trouvé la solution.
Vous pouvez à présent admirer les différentes démonstrations proposées par Franky et w9Lyl6n. Il y a également une troisième façon de voir très intéressante initiée par Mathias, qu'il reste à compléter.
#46 - 16-11-2013 17:15:06
- titoufred
- Elite de Prise2Tete
- Enigmes résolues : 20
- Messages : 1749
promenons-nous dabs le train
@fix : tes formules ne sont pas bonnes.
#47 - 16-11-2013 17:16:33
- NickBern
- Passionné de Prise2Tete
- Enigmes résolues : 45
- Messages : 50
Promenons-nus dans le train
titoufred a écrit:Il y a une petite erreur dans ton programme, tu dois incrémenter time en toute fin de boucle while par exemple.
C'pô une erreur, mais ça m'a paru bizarre en l'écrivant aussi ^^
Si tu le mets à la fin ça affichera "à t=0, [0-100-0-0-0-...],et tout est décalé.
En fait avec du recul je me dis qu'il aurait été plus propre d'initialiser à "time=1", et rajouter une ligne "time++;" à la fin de la fonction (je suis habitué aux exos de physique qui plantent le décor "à t=0") Ça change rien, on est sauvés
En attendant j'adore lire les réponses des autres, ceux qui résolvent ça avec un calcul simple en apparence, mais totalement imparable ! Bravo !
#48 - 16-11-2013 17:21:00
- titoufred
- Elite de Prise2Tete
- Enigmes résolues : 20
- Messages : 1749
promenons-nous dabs le train
Non vraiment, il faut laisser time=0 et incrémenter time en fin de boucle. En tout cas après ton incrémentation de temps_moy. Essaye avec un train à 1 ou 2 wagons, tu vas comprendre. Tes moyennes sont décalées de 1. Bouge ton printf aussi si tu veux.
#49 - 16-11-2013 17:35:09
- gwen27
- Elite de Prise2Tete
- Enigmes résolues : 49
- Messages : 5,996E+3
Promenons-nous dans e train
D'un autre côté, sans formule ni tableur, je pense avoir eu presque bon.
Il suffisait bien d'une simple multiplication. Je ne sais pas où je me suis planté. 18x19 non, mais 19x19.
Un ajustement est peut-être à faire mais je crois qu'un raisonnement simple permettait d'en venir à bout très vite. (j'ai du mal placer le +1)
On a 19 wagons à grimper. Depuis chaque wagon on a en moyenne un aller retour vers le bas et une montée. La moyenne d'un aller-retour est 18 . (de 2 à 34) 19x18=342
D'où vient le 19 ?
PS mes tests avec une variable aléatoire -1 ou 1 sur 2000 cas avec excel donnent 342,9... Je pense que j'ai du louper une incrémentation dans la formulation.
Mais j'aimerais bien comprendre où je me trompe, merci
#50 - 16-11-2013 17:52:00
- NickBern
- Passionné de Prise2Tete
- Enigmes résolues : 45
- Messages : 50
promenpns-nous dans le train
Au temps pour moi, en effet dans le calcul de temps_moy je multipliais le nombre avec le temps précédant
Au premier lancement, on arrivait avec time=0, [100-0---------0] puis time++ => time=1, [100-0--------0] et avec ça temps_moy est effectivement décalé...
Solution : mettre "avance(train);" comme première instruction du do-while.
Merciii
EDIT : ça donne 360.988 minutes on est bon
Mots clés des moteurs de recherche
|
|