Gamoover

Vous êtes nostalgiques des jeux vidéos de votre enfance ? Vous désirez acquérir, ou construire une borne d'arcade ? Vous trouverez ici les réponses a vos questions et une communauté de joueurs passionnés.

Debuter la programmation en C

Démarré par 9uile, Lundi 29 Novembre 2010, 15:25:17 PM

9uile

Citation de: dapsaille le Jeudi 02 Décembre 2010, 16:45:44 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 !


ɐɹqoƆ‾ɥƃᴉH

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

Little_Rabbit

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 bornes 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 : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

pierre512

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.

9uile

#68
Citation de: High_Cobra 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

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 !!)

Citation de: Little_Rabbit 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

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

ɐɹqoƆ‾ɥƃᴉH

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...

9uile

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.










ɐɹqoƆ‾ɥƃᴉH

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

Sir Kayne

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 puis un flipper Raven (je l'aurais un jour...)
"Ne me dite pas que je ne peux pas faire quelque chose!" J.Locke

9uile

Citation de: Sir Kayne le Vendredi 03 Décembre 2010, 22:11:03 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

Little_Rabbit

Salut,

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

A+  Thierry
Recherche bornes 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 : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

Bal

Code::blocks +1 !

Simple, léger, efficace, what else ?




9uile

Pour l'instant code blocks étant donné que c'est le soft utilisé pour les exemples sur le site du zero...

BadGuigui

#77
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
Promis je me présente bientôt ;)
[WIP] Cocktail mamecab Ubuntu

9uile

#78
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

ɐɹqoƆ‾ɥƃᴉH

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...