MisterWhiteLapin
Messages postés19Date d'inscriptionmercredi 18 juin 2008StatutMembreDernière intervention28 juillet 2008 28 juil. 2008 à 12:45
Bonjour 33solo,
Pour ton bout de code du calcul sur la fonction mathématique je suis tout à fait d'accord avec toi, c'est bien ça que nous voulons calculer.
Dans mon code, je n'ai pas été adepte de faire le calcul du produit "365 * 364 * 363 ..." puis, à la fin, tout diviser par une grande puissance de 365 car, selon le système sur lequel tu joues ton programme, il se peut que bien vite tu ne puisses plus mettre à la puissance. Avec ma méthode, j'évite ce problème là.
Pour ce qui est du VBScript, j'ai été très surpris: il va très loin!
Je viens de faire tourner le bout de code suivant:
for i = 0 to 1000
a = 365^i
Wscript.echo "365^" & i & " = " & a
Next
il a calculé jusqu'à 365^120. Après il lance une erreur:
Donc si j'avais utilisé ton morceau de code dans mon script, nous n'aurions pas pu lancer le script sur plus de "120 personnes" sans avoir une erreur d'exécution. Dans la version que j'ai proposé, il arrondie assez vite la probabilité à 100% (ce qui est faux d'un point de vue mathématique) mais au moins il ne plante pas. Mais quand on est à 121, il calcul encore de manière assez précise sans arrondir à 100%.
Voilà pour l'explication de mon choix, il est vrai que cela méritait un éclaircissement puisque, au départ, je l'aurai bien écrit de la même manière que le suggère 33solo.
Cordialement,
--
MisterWhiteLapin
RcrivelliNET
Messages postés41Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention12 août 2008 28 juil. 2008 à 12:02
Hello à tous,
Sans lancer la polémique je ne pense pas que l'endroit soit propice au débat sur peut t'on appeler tel ou tel choses un paradoxe ... j'y ai d'ailleurs longtemps travaillé sur le sujet et nombre de philosophes s'y sont cassé les dents ... mais pour mettre un petit peut les choses en places voici en substance ce que donne la définition de "Paradoxe" :
Un paradoxe est une proposition qui contient ou semble contenir une contradiction logique, ou un raisonnement qui, bien que sans faille apparente, aboutit à une absurdité, ou encore, une situation qui contredit l'intuition commune.
Ce qui me semble totalement convenir a l'énoncé ... d'ailleurs le paradoxe est très subjectif puisque c'est le résonnement qui pousse au paradoxe tant et si bien que la vie peut être considérer comme un paradoxe ce qui est en soit un paradoxe ... donc je ne pense pas qu'il soit nécessaire d'en débattre ici.
Pour ce qui est du reste ... je reste sur mon précédent commentaire ... à savoir un code très bien documenté qui reste une mine d'or pour un débutant qui pourra faire évoluer son code en fonction de son apprentissage ... c'est quand même plus ludique qu'un "hello world"
Bonne continuation à tous.
33solo
Messages postés5Date d'inscriptionjeudi 15 mars 2007StatutMembreDernière intervention26 novembre 2013 28 juil. 2008 à 11:40
Bonjour MisterWhiteLapin,
Très bien documenté. Je suis pas au top au niveau math et j'ai compris.
Un autre manière de voir la formule du Paradoxe ...
REM avec n = 23
REM p_bar(n)= [(nbJours)! - (nbJours - n + 1)!] / nbJours^n
REM p_bar(n)[365!-343!]/365^23> 1 boucle FOR pour calculer [365!-343!]
REM Avec à la place de :
REM res = 1.0
REM nbJoursDec = nbJours - 1.0
REM i = 1
REM While (i < n)
REM res = res * (nbJoursDec) / nbJours
REM nbJoursDec = nbJoursDec - 1.0
REM i = i + 1
REM WEnd
Res = 1
For i=(nbJours - n + 1) to nbJours : Res = Res * i : Next i
Res = Res / (nbJours)^n
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 28 juil. 2008 à 11:38
Bonjour,
... A toute intervention, il ne faut jamais se sentir personnellement visé; du moins c'est un conseil...
Ma question "En quoi est-ce un paradoxe ?", n'a que comme réponse : "Ce nom a été donné par celui qui l'a énoncé Richard von Mises"... donc je suis en droit de me demander pourquoi appeler ce fait statistique compréhensible et expliqué grâce aux calculs des probabilités, en quoi est-ce un paradoxe... Si on commence a appeler chaque fait statistique qui surprend certaines personnes " des paradoxes ", on a pas fini... En effet, la vie est pleine de paradoxe, voir la vie elle-même est paradoxale... En effet, quelle est la probabilité qu'une planète abrite la vie ? Très faible assurément... pourtant on est là (à débattre pour presque rien). Doit-on appeler ce fait, le paradoxe de la vie ?
=
Plus sérieusement, sur le code. Si ton but premier était de donner un exemple de code pour aider les débutants, alors je reste sur ma remarque.
Montrer sur un code simple, la structure d'une fonction, la façon de les utiliser (c'est vraiment pas compliqué, en plus), etc... me semble plus intructif. C'est même sur une structure d'un exemple simple, qu'on apprend le mieux, et non dans une programmation dense, non ?
C'est d'ailleurs avec cela, que ta programmation aurait atteint son but... aider les débutants à progresser, me semble-t-il.
Avec moins de blabla, je dirais aussi à la suite de tes remarques :
Maintenant, je conçois que ce code est perfectible : " => oui, ben le code vraiment parfait n'est pas chose aisée... alors... "
- faire des appels à fonction, " => Oui, déjà expliqué "
- utiliser des boucles for au lieu de boucles while, " => ben, non, pas obligé. "
- faire moins de 80 colonnes par ligne, " => NON. Pas d'accord "
- faire des fonctions de 20 lignes maximum, " => Absolument, non. "
=
Ceci dit, je n'expose que de simples remarques personnelles, rien de plus... que mes derniers neuronnes survivant (avec mon grand âge) me sugère... et quand tu dis : "et mentir: c'est pas bien"... La vérité serait bien pire... hahaha...
Amicalement,
Us.
MisterWhiteLapin
Messages postés19Date d'inscriptionmercredi 18 juin 2008StatutMembreDernière intervention28 juillet 2008 28 juil. 2008 à 09:10
Bonjour us_30,
Je suis surpris par ta question "En quoi est-ce un paradoxe ?". Si tu as été lire la page Wikipedia comme suggéré, tu saurais que le "paradoxe des anniversaires" c'est le nom donné à "une estimation probabiliste". Ce nom a été donné par celui qui l'a énoncé Richard von Mises, pas par moi. j'ai juste proposé un code qui l'illustre.
En ce qui concerne le caractère non réutilisable de ce code, tu as raison ...
... mais mon but en postant ce code dans la catégorie "mathématiques" était avant tout d'illustrer cette célèbre découverte de Richard von Mises et pas de donner des fonctions toutes faites à réutiliser dans un projet.
Si le lecteur débutant lit ce code dépourvu d'appels à fonctions, il comprendra probablement tout le code et sera capable de se servir de manière intelligente de ce code pour faire ce qu'il cherche à faire.
Maintenant, je conçois que ce code est perfectible:
- faire des appels à fonction,
- utiliser des boucles for au lieu de boucles while,
- faire moins de 80 colonnes par ligne,
- faire des fonctions de 20 lignes maximum,
- ...
Mais le but, c'est que tous le monde ait compris le fonctionnement du code et la notion mathématique.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 27 juil. 2008 à 13:15
Bonjour,
En quoi est-ce un paradoxe ?
C'est juste contre intuitif pour certains...
Il aurait été intéressant de plutôt faire des petites fonctions de calculs séparées, par exemple pour remplir un tableau de nombre aléatoire, pour que ce code soit en parti réutilisable dans un autre projet...
Amicalement,
Us.
RcrivelliNET
Messages postés41Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention12 août 2008 25 juil. 2008 à 11:11
Hello,
Je n'ai pas eu le temps de regarder le code ni toute la fonction mathématique de ton code, par contre je vais quand même te mettre un 9/10 pour le bel effort de commentaire ... je pense qu'il serra execivement utile pour les débutant.
C'est le genre de petites sources simple et utile pour l'apprentissage qui fait avancer le schmilbic :-) ...
Merci.
A+
gillardg
Messages postés3275Date d'inscriptionjeudi 3 avril 2008StatutMembreDernière intervention14 septembre 20142 24 juil. 2008 à 14:29
c'est juste une constatation par rapport à beaucoup de calcul de statistiques sur des dates
MisterWhiteLapin
Messages postés19Date d'inscriptionmercredi 18 juin 2008StatutMembreDernière intervention28 juillet 2008 24 juil. 2008 à 14:17
Bonjour Gillardg,
Pour le cas du 29 février, Wikipedia dit: "Le calcul exposé néglige la date du 29 février dont la prise en compte changerait très peu le pourcentage indiqué."
J'ai juste posté ça pour l'intérêt mathématique. Maintenant, si tu veux considéré le 29 févriers, tu peux modifier la source en mettre 366 à la place de 365. C'est une constante, tu n'as qu'une valeur à changer.
Je n'ai pas oublié le 23 février, c'est juste que je m'en moque complètement.
Cordialement,
--
MisterWhiteLapin
gillardg
Messages postés3275Date d'inscriptionjeudi 3 avril 2008StatutMembreDernière intervention14 septembre 20142 24 juil. 2008 à 14:08
dans ce genre de problème on oublie souvent les années bisextilles.
les gens qui sont nés le 29/2 ils sont punis??
28 juil. 2008 à 12:45
Pour ton bout de code du calcul sur la fonction mathématique je suis tout à fait d'accord avec toi, c'est bien ça que nous voulons calculer.
Dans mon code, je n'ai pas été adepte de faire le calcul du produit "365 * 364 * 363 ..." puis, à la fin, tout diviser par une grande puissance de 365 car, selon le système sur lequel tu joues ton programme, il se peut que bien vite tu ne puisses plus mettre à la puissance. Avec ma méthode, j'évite ce problème là.
Pour ce qui est du VBScript, j'ai été très surpris: il va très loin!
Je viens de faire tourner le bout de code suivant:
for i = 0 to 1000
a = 365^i
Wscript.echo "365^" & i & " = " & a
Next
il a calculé jusqu'à 365^120. Après il lance une erreur:
...
365^117 = 6,14136827812038E+299
365^118 = 2,24159942151394E+302
365^119 = 8,18183788852588E+304
365^120 = 2,98637082931195E+307
D:\d.vbs(2, 2) Erreur d'exécution Microsoft VBScript: Dépassement de capacité
Donc si j'avais utilisé ton morceau de code dans mon script, nous n'aurions pas pu lancer le script sur plus de "120 personnes" sans avoir une erreur d'exécution. Dans la version que j'ai proposé, il arrondie assez vite la probabilité à 100% (ce qui est faux d'un point de vue mathématique) mais au moins il ne plante pas. Mais quand on est à 121, il calcul encore de manière assez précise sans arrondir à 100%.
Voilà pour l'explication de mon choix, il est vrai que cela méritait un éclaircissement puisque, au départ, je l'aurai bien écrit de la même manière que le suggère 33solo.
Cordialement,
--
MisterWhiteLapin
28 juil. 2008 à 12:02
Sans lancer la polémique je ne pense pas que l'endroit soit propice au débat sur peut t'on appeler tel ou tel choses un paradoxe ... j'y ai d'ailleurs longtemps travaillé sur le sujet et nombre de philosophes s'y sont cassé les dents ... mais pour mettre un petit peut les choses en places voici en substance ce que donne la définition de "Paradoxe" :
Un paradoxe est une proposition qui contient ou semble contenir une contradiction logique, ou un raisonnement qui, bien que sans faille apparente, aboutit à une absurdité, ou encore, une situation qui contredit l'intuition commune.
Ce qui me semble totalement convenir a l'énoncé ... d'ailleurs le paradoxe est très subjectif puisque c'est le résonnement qui pousse au paradoxe tant et si bien que la vie peut être considérer comme un paradoxe ce qui est en soit un paradoxe ... donc je ne pense pas qu'il soit nécessaire d'en débattre ici.
Pour ce qui est du reste ... je reste sur mon précédent commentaire ... à savoir un code très bien documenté qui reste une mine d'or pour un débutant qui pourra faire évoluer son code en fonction de son apprentissage ... c'est quand même plus ludique qu'un "hello world"
Bonne continuation à tous.
28 juil. 2008 à 11:40
Très bien documenté. Je suis pas au top au niveau math et j'ai compris.
Un autre manière de voir la formule du Paradoxe ...
REM avec n = 23
REM p_bar(n)= [(nbJours)! - (nbJours - n + 1)!] / nbJours^n
REM p_bar(n)[365!-343!]/365^23> 1 boucle FOR pour calculer [365!-343!]
REM Avec à la place de :
REM res = 1.0
REM nbJoursDec = nbJours - 1.0
REM i = 1
REM While (i < n)
REM res = res * (nbJoursDec) / nbJours
REM nbJoursDec = nbJoursDec - 1.0
REM i = i + 1
REM WEnd
Res = 1
For i=(nbJours - n + 1) to nbJours : Res = Res * i : Next i
Res = Res / (nbJours)^n
28 juil. 2008 à 11:38
... A toute intervention, il ne faut jamais se sentir personnellement visé; du moins c'est un conseil...
Ma question "En quoi est-ce un paradoxe ?", n'a que comme réponse : "Ce nom a été donné par celui qui l'a énoncé Richard von Mises"... donc je suis en droit de me demander pourquoi appeler ce fait statistique compréhensible et expliqué grâce aux calculs des probabilités, en quoi est-ce un paradoxe... Si on commence a appeler chaque fait statistique qui surprend certaines personnes " des paradoxes ", on a pas fini... En effet, la vie est pleine de paradoxe, voir la vie elle-même est paradoxale... En effet, quelle est la probabilité qu'une planète abrite la vie ? Très faible assurément... pourtant on est là (à débattre pour presque rien). Doit-on appeler ce fait, le paradoxe de la vie ?
=
Plus sérieusement, sur le code. Si ton but premier était de donner un exemple de code pour aider les débutants, alors je reste sur ma remarque.
Montrer sur un code simple, la structure d'une fonction, la façon de les utiliser (c'est vraiment pas compliqué, en plus), etc... me semble plus intructif. C'est même sur une structure d'un exemple simple, qu'on apprend le mieux, et non dans une programmation dense, non ?
C'est d'ailleurs avec cela, que ta programmation aurait atteint son but... aider les débutants à progresser, me semble-t-il.
Avec moins de blabla, je dirais aussi à la suite de tes remarques :
Maintenant, je conçois que ce code est perfectible : " => oui, ben le code vraiment parfait n'est pas chose aisée... alors... "
- faire des appels à fonction, " => Oui, déjà expliqué "
- utiliser des boucles for au lieu de boucles while, " => ben, non, pas obligé. "
- faire moins de 80 colonnes par ligne, " => NON. Pas d'accord "
- faire des fonctions de 20 lignes maximum, " => Absolument, non. "
=
Ceci dit, je n'expose que de simples remarques personnelles, rien de plus... que mes derniers neuronnes survivant (avec mon grand âge) me sugère... et quand tu dis : "et mentir: c'est pas bien"... La vérité serait bien pire... hahaha...
Amicalement,
Us.
28 juil. 2008 à 09:10
Je suis surpris par ta question "En quoi est-ce un paradoxe ?". Si tu as été lire la page Wikipedia comme suggéré, tu saurais que le "paradoxe des anniversaires" c'est le nom donné à "une estimation probabiliste". Ce nom a été donné par celui qui l'a énoncé Richard von Mises, pas par moi. j'ai juste proposé un code qui l'illustre.
En ce qui concerne le caractère non réutilisable de ce code, tu as raison ...
... mais mon but en postant ce code dans la catégorie "mathématiques" était avant tout d'illustrer cette célèbre découverte de Richard von Mises et pas de donner des fonctions toutes faites à réutiliser dans un projet.
Si le lecteur débutant lit ce code dépourvu d'appels à fonctions, il comprendra probablement tout le code et sera capable de se servir de manière intelligente de ce code pour faire ce qu'il cherche à faire.
Maintenant, je conçois que ce code est perfectible:
- faire des appels à fonction,
- utiliser des boucles for au lieu de boucles while,
- faire moins de 80 colonnes par ligne,
- faire des fonctions de 20 lignes maximum,
- ...
Mais le but, c'est que tous le monde ait compris le fonctionnement du code et la notion mathématique.
Cordialement,
PS: Je viens de regarder ton profil http://www.vbfrance.com/auteur/US30/488557.aspx, j'ai du mal à croire que tu as 107 ans (et mentir: c'est pas bien) ;-)
--
MistertWhiteLapin
27 juil. 2008 à 13:15
En quoi est-ce un paradoxe ?
C'est juste contre intuitif pour certains...
Il aurait été intéressant de plutôt faire des petites fonctions de calculs séparées, par exemple pour remplir un tableau de nombre aléatoire, pour que ce code soit en parti réutilisable dans un autre projet...
Amicalement,
Us.
25 juil. 2008 à 11:11
Je n'ai pas eu le temps de regarder le code ni toute la fonction mathématique de ton code, par contre je vais quand même te mettre un 9/10 pour le bel effort de commentaire ... je pense qu'il serra execivement utile pour les débutant.
C'est le genre de petites sources simple et utile pour l'apprentissage qui fait avancer le schmilbic :-) ...
Merci.
A+
24 juil. 2008 à 14:29
24 juil. 2008 à 14:17
Pour le cas du 29 février, Wikipedia dit: "Le calcul exposé néglige la date du 29 février dont la prise en compte changerait très peu le pourcentage indiqué."
J'ai juste posté ça pour l'intérêt mathématique. Maintenant, si tu veux considéré le 29 févriers, tu peux modifier la source en mettre 366 à la place de 365. C'est une constante, tu n'as qu'une valeur à changer.
Je n'ai pas oublié le 23 février, c'est juste que je m'en moque complètement.
Cordialement,
--
MisterWhiteLapin
24 juil. 2008 à 14:08
les gens qui sont nés le 29/2 ils sont punis??