Auteur Sujet: Debuter la programmation en C  (Lu 8690 fois)

Hors ligne 9uile

  • Scotché
  • *
  • Messages: 459
    • Voir le profil
Debuter la programmation en C
« Réponse #64 le: Vendredi 03 Décembre 2010, 16:00:50 pm »
programme.exe > sortie.txt  ^-

C'est sympa, ca marche aussi en .xls !

J'ai fait 3 tests et voici le résultat :
Vous avez 231 exemples (77*3 :)  ) sous les yeux pour vous faire un avis mais pour moi c'est concluant !


Hors ligne High_Cobra

  • Webmaster
  • Dieu de l' Arcade
  • *****
  • Messages: 11933
  • Je suis juste un multi-nick d'AsPiC...
    • Voir le profil
Debuter la programmation en C
« Réponse #65 le: Vendredi 03 Décembre 2010, 16:10:30 pm »
La moyenne est en aucun cas synonyme de bonne répartition...

Sur un échantillon de 100 nombres tirés de 1 à 100, si tu tires 50 fois 25 et 50 fois 75, ta moyenne est bien de 50, mais ta répartition est foireuse... Mon exemple est extrême mais montre bien que la moyenne ne veut rien dire...

Au pire, file ton fichier excel avec les nombre... Et 77 échantillons pour un tirage de 1 à 1000, c'est très peu :D

Hors ligne Little_Rabbit

  • Arcade Myth
  • *
  • Messages: 4660
  • The early 80's : the arcade golden age !!
    • Voir le profil
Debuter la programmation en C
« Réponse #66 le: Vendredi 03 Décembre 2010, 17:30:26 pm »
salut 9uile,

OK mais je ne suis pas sur d'avoir tout suivi :

les chiffres que tu nous files, c'est ceux issus de ta fonction rnd modifiée ou ceux de la fonction standard que tu penses être buggée ?

Ce qui serait intéressant, c'est que tu fasses des tirages avec celle de base et avec la tienne, histoire qu'on compare :).

A+  Thierry
Recherche dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Xenon, Baby Pac Man, Gottlieb des années 80 (Spirit, Amazon Hunt, ...). Divers :  Ice Cold Beer
Trois fois rien quoi ! :D

Hors ligne pierre512

  • Pensionnaire
  • *
  • Messages: 31
    • Voir le profil
Debuter la programmation en C
« Réponse #67 le: Vendredi 03 Décembre 2010, 17:54:56 pm »
Pour qualifier ton générateur de nombres aléatoires, tu peux utiliser le test du khi2. En très gros ça te donne une note t'indiquant si tes nombres aléatoires sont répartis comme il faut.

Hors ligne 9uile

  • Scotché
  • *
  • Messages: 459
    • Voir le profil
Debuter la programmation en C
« Réponse #68 le: Vendredi 03 Décembre 2010, 19:10:22 pm »
La moyenne est en aucun cas synonyme de bonne répartition...

Sur un échantillon de 100 nombres tirés de 1 à 100, si tu tires 50 fois 25 et 50 fois 75, ta moyenne est bien de 50, mais ta répartition est foireuse... Mon exemple est extrême mais montre bien que la moyenne ne veut rien dire...

Au pire, file ton fichier excel avec les nombre... Et 77 échantillons pour un tirage de 1 à 1000, c'est très peu :D

Le tirage est de 50000 chiffres de 3digits (3fois).
Je n'ai mis que 77 lignes dans mon print screen pour des soucis de performances sur le site... Imagine la taille de l'image.

Concernant la moyenne,je pense que tu te trompe, j'essaierai de l'expliquer plus bas. (sponsorisé par WIKIPEDIA !!)

salut 9uile,

OK mais je ne suis pas sur d'avoir tout suivi :

les chiffres que tu nous files, c'est ceux issus de ta fonction rnd modifiée ou ceux de la fonction standard que tu penses être buggée ?

Ce qui serait intéressant, c'est que tu fasses des tirages avec celle de base et avec la tienne, histoire qu'on compare :).

A+  Thierry

Les résultats proviennent de la version que j'ai modifiée.

Ci-dessous une définition trouvée sur wiki permettant d'étoffer le résultat concernant la moyenne des tirages.

http://fr.wikipedia.org/wiki/Probabilite


"La probabilité (du latin probabilitas) est une évaluation du caractère probable d'un évènement. En mathématiques, l'étude des probabilités est un sujet de grande importance donnant lieu à de nombreuses applications.

La probabilité d'un événement est un nombre réel compris entre 0 et 1. Plus ce nombre est grand, plus le risque (ou la chance, selon le point de vue) que l'événement se produise est grand. Si on considère que la probabilité qu'un lancer de pièce donne pile est égale à 1/2, cela signifie que, si on lance un très grand nombre de fois cette pièce, la fréquence des piles va tendre vers 1/2, sans préjuger de la régularité de leur répartition."

DONC, si je lance une piece un l'air (pile =1, face =2)

nb lancés
1
probabilité pile
0,5 chance que le chiffre soit égal a 1

probabilité face
0,5 chance que le chiffre soit égal a 2

(1/2 * 1)+(1/2*2)=(0,5*1)+(0,5*2)=0,5+1=1,5
Soit le milieu de l'ecart entre 1 et 2.

A noter que le nombre de lancés importe peu vu qu'on a toujours une chance sur 2.

La vache j'ai mal aux neurones !! :o
« Modifié: Vendredi 03 Décembre 2010, 19:28:00 pm par 9uile »

Hors ligne High_Cobra

  • Webmaster
  • Dieu de l' Arcade
  • *****
  • Messages: 11933
  • Je suis juste un multi-nick d'AsPiC...
    • Voir le profil
Debuter la programmation en C
« Réponse #69 le: Vendredi 03 Décembre 2010, 20:57:43 pm »
Prends le raisonnement par l'absurde que j'ai fait au dessus, si ton truc est moisi, doit tirer un nombre entre 1 et 100 et tire toujours 25 ou 75... T'as une moyenne parfaite, alors que ton truc est moisi...

Si c'était aussi simple que ça de faire du vrai aléatoire, les systèmes dédiés à ça ne coûteraient pas une couille comme c'est le cas actuellement...

Hors ligne 9uile

  • Scotché
  • *
  • Messages: 459
    • Voir le profil
Debuter la programmation en C
« Réponse #70 le: Vendredi 03 Décembre 2010, 21:18:26 pm »
C'est sur que si tu compares mes dix lignes de codes avec des programmes développés par des mathématiciens/scientifiques qui bossent depuis des années sur le sujet, il y a de grande chances que mon truc soit moisi.

L'essentiel pour moi, c'est que les chiffres retournés apparaissent bien comme des chiffres tirés au hasard. Ayant fait le test comme tu me l'as proposé (50000 chiffres de 0 a 999) trois fois de suite, les chiffres retournés ne semblent pas souffrir d'un formatage quelconque.

Maintenant si je te dis "627" qu'est ce qui peut te dire que ce chiffre n'est pas le fruit du hasard? Il figure bien dans la plage de chiffre demandé. J'aurais aussi bien pu dire "000" ou "123". Bien que ces chiffres paraissent improbables, il sont également possibles.










Hors ligne High_Cobra

  • Webmaster
  • Dieu de l' Arcade
  • *****
  • Messages: 11933
  • Je suis juste un multi-nick d'AsPiC...
    • Voir le profil
Debuter la programmation en C
« Réponse #71 le: Vendredi 03 Décembre 2010, 21:31:10 pm »
Je suis d'accord, mais je met en doute le fait que ta fonction soit mieux que le rand fourni de base, c'est tout, en trafiquant le résultat, tu peux très bien piper la fonction qui ne l'était pas à la base...

Après, si ça te convient, c'est très bien :D

Hors ligne Sir Kayne

  • Arcade Druid
  • *
  • Messages: 3858
    • Voir le profil
    • Le monde de Shanarah
Debuter la programmation en C
« Réponse #72 le: Vendredi 03 Décembre 2010, 22:11:03 pm »
Bah les proba c'est pas des maths, c'est une science inexact, elle se base sur des incertitudes  :D
Le hasard n'est que la somme de nos ignorances...
Il existe effectivement des methodes plus "imprévisible" qui permette de sortir des suites de nombres plus "aléatoires". (je pense que High_Cobra fait référence à des méthodes quantiques, etc...?!)

Je serais curieux de voit ta fonction quand même, mais surtout ce que tu comptes en faire, ce n'est pas simplement pour fabriquer un jeux "devinez un nombre" ?  :?
Cherche : pédale d'accélération d'une Outrun Upright, Une Racingcab (outrunner ou Daytona), pcb RaveRacer, PCB Missile Command (he oui), une Spacegun et le pcb Kabuki Z (on peut toujours rêver :)) et puis un flipper Raven (je l'aurais un jour...)
"Ne me dite pas que je ne peux pas faire quelque chose!" J.Locke

Hors ligne 9uile

  • Scotché
  • *
  • Messages: 459
    • Voir le profil
Debuter la programmation en C
« Réponse #73 le: Vendredi 03 Décembre 2010, 22:22:50 pm »
ce n'est pas simplement pour fabriquer un jeux "devinez un nombre" ?  :?

Non, c'est juste le premier exercice du tutorial que je suis en train de lire ... ;D

Hors ligne Little_Rabbit

  • Arcade Myth
  • *
  • Messages: 4660
  • The early 80's : the arcade golden age !!
    • Voir le profil
Debuter la programmation en C
« Réponse #74 le: Lundi 06 Décembre 2010, 23:58:05 pm »
Salut,

Au fait, quel compilateur et IDE as-tu retenu pour tes exercices ? Visual Express C++ ou Code::Blocks ?

A+  Thierry
Recherche dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Xenon, Baby Pac Man, Gottlieb des années 80 (Spirit, Amazon Hunt, ...). Divers :  Ice Cold Beer
Trois fois rien quoi ! :D

Hors ligne Bal

  • Historical Gamer
  • *
  • Messages: 4253
    • Voir le profil
    • Darkmoon
Debuter la programmation en C
« Réponse #75 le: Mardi 07 Décembre 2010, 07:46:51 am »
Code::blocks +1 !

Simple, léger, efficace, what else ?




Hors ligne 9uile

  • Scotché
  • *
  • Messages: 459
    • Voir le profil
Debuter la programmation en C
« Réponse #76 le: Mardi 07 Décembre 2010, 08:43:18 am »
Pour l'instant code blocks étant donné que c'est le soft utilisé pour les exemples sur le site du zero...

Hors ligne BadGuigui

  • Accro
  • *
  • Messages: 247
    • Voir le profil
Debuter la programmation en C
« Réponse #77 le: Mardi 07 Décembre 2010, 09:55:01 am »
Pour revenir au probabilité, la moyenne est une chose mais est loin de vérifier si ta fonction correspond à ce que tu attends.

Par la fonction rand que tu cherches à faire, c'est à dire trouver un nombre entier entre 0 et n, il faut suivre une loi Uniforme discrète U(0,n), avec pour moyenne n/2, mais le plus important est de vérifier la densité de probabilité qui doit être de 1/n dans ton cas.

Plus concrètement, fait un graphique du nombre de fois que tu as eu chaque valeurs comprises entre 0 et n. Par exemple tu appelles K fois ta fonction, alors il faut que ton graphique soit le plus proche de K/n.

La façon de vérifier la plus optimale et de faire la somme  des valeurs absolues de la différence entre K/n et le nombre fois que tu as eu chaque valeurs comprise entre 0 et n. Ta loi est bonne quand cette valeur est proche de zéro, et doit tendre vers 0 quand K tend vers l'infini.

Tu as maintenant une bonne manière de vérifier que ta fonction est meilleure que celle de base.

Et sinon après cela si quelqu'un ose dire que les probabilités ne sont pas des maths...  :-(( >:D )::( :(< je rigole
« Modifié: Mardi 07 Décembre 2010, 09:58:04 am par BadGuigui »
Promis je me présente bientôt ;)
[WIP] Cocktail mamecab Ubuntu

Hors ligne 9uile

  • Scotché
  • *
  • Messages: 459
    • Voir le profil
Debuter la programmation en C
« Réponse #78 le: Mardi 07 Décembre 2010, 10:02:39 am »
Si je te met un fichier a dispo, tu peux faire le test ?
De combien as tu besoin d'enregistrements et sur quelle plage (1 a 100 ou plus !)

Attention ! j'ai jamais dis que je voulais faire mieux que ce qui existe !!
(ni pire ...) :o
« Modifié: Mardi 07 Décembre 2010, 10:07:46 am par 9uile »

Hors ligne High_Cobra

  • Webmaster
  • Dieu de l' Arcade
  • *****
  • Messages: 11933
  • Je suis juste un multi-nick d'AsPiC...
    • Voir le profil
Debuter la programmation en C
« Réponse #79 le: Mardi 07 Décembre 2010, 10:10:57 am »
Je t'avais demandé un fichier quelques pages plus tot déjà... Pour justement faire ce genre de test de répartition...

500.000 enregistrements sur une plage de 1 à 100 est pas mal...