IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Binarisation d'une séquence de nombres aléatoires


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut Binarisation d'une séquence de nombres aléatoires
    Bien le bonjour à tous,

    Je m'étonne de n'avoir rien trouvé de concluant sur ce sujet, mais enfin bon...

    Pour l'étude d'un générateur de nombres aléatoires, j'ai besoin, de binariser une séquence de nombres obtenus (transformer la séquence en suite de 0 et 1 quoi...).

    Je précise que je ne sais rien du générateur, je suppose juste que celui-ci est à peu près aléatoire, et les nombres obtenus appartiennent à l'intervalle [0,1[, comme 0,3986675887...

    A priori, pour binariser la séquence, il me suffirait juste d'affecter 0 aux nombres dont la première décimale est paire, 1 aux autres...
    Ou bien encore les nombres < 0,5 envoyés sur 0 et ceux >= 0,5 envoyé sur 1Mais ces méthodes ne me plaisent pas :

    Imaginons un générateur dont la probabilté d'obtenir un nombres compris entre 0 et 0,1 soit la même que celle d'obtenir un nombre compris entre 0,9 et 1, mais que celles-ci soient plus forte que celle d'obtenir un nombre entre 0,1 et 0,9.

    Ma méthode de binarisation gommerais ce défaut et je pourrais arriver à conclure que ce générateur produit une séquence aléatoire !

    Comment donc trouver une méthode qui soit relativement "neutre" par rapport aux résultats, et qui permette de laisser passer les erreurs (où du moins le plus d'erreurs possibles) ???

    Je vous remercie par avance de toute l'aide que vous pourrez m'apporter

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Imaginons un générateur dont la probabilté d'obtenir un nombres compris entre 0 et 0,1 soit la même que celle d'obtenir un nombre compris entre 0,9 et 1, mais que celles-ci soient plus forte que celle d'obtenir un nombre entre 0,1 et 0,9.
    Il s'agit à mon avis d'un problème mal posé.
    Soit le générateur d'origine est uniforme, soit il ne l'est pas.
    S'il l'est la probabilité pour un tirage d'être entre 0 et 0.1 doit être environ 1/10, de même que celle d'être entre 0.9 et 1, mais la proba d'être entre 0.1 et 0.9 devrait être de 8/10 et ne peut en aucun cas être sensiblement égale aux deux autres. Nous partons donc d'une 'supposition' forcément vraie.
    Il semble que le but de cette 'binarisation' soit de faire un pile ou face équitable. Si c'est le cas, il est préférable à mon avis de partir avec des suites pseudo-aléatoires d'entiers dont on peut 'mesurer' le défaut voir par exemple:
    http://fr.wikipedia.org/wiki/G%C3%A9...l%C3%A9atoires
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Merci de ta réponse

    Je cherche à VERIFIER si mon générateur est aléatoire ou non.

    Les tests que je compte mettre en oeuvre sont des tests qui s'applique sur des sorties binaires. Or mon générateur à tester renvoi des sorties non-binaires.

    En faisant une mauvaise binarisation, j'ai peur de tester autre chose que ce que je veux. Dans mes exemples je teste soit la distribution des nombres paires ou impairs, soit la distribution par rapport à 0,5.

    Et partant de la, je ne peux rien dire quand à la réelle qualité de mon générateur, et des nombres décimaux qu'il renvoi.

    D'ou comment faire pour que la binarisation réflète les défauts du générateurs.

    A moins que ce soit impossible, du fait que la binarisation n'est pas bijective ?

    Merci encore

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par cs_ntd Voir le message
    Les tests que je compte mettre en oeuvre sont des tests qui s'applique sur des sorties binaires. Or mon générateur à tester renvoi des sorties non-binaires.
    Un type de donnée qui n'est pas représenté en binaire ? sur un ordinateur ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Arf...
    Si bien sur pseudocode ...

    Nous somme bien d'accord que les nombres sont représenté en machine sous leur forme binaire, mais ils sont obtenus sous une forme décimale (faut imaginer une série de donnée sous excel ou autre hein ^^).

    Ce que je veux c'est trouver une méthode de représentation binaire de la séquence de nombres décimaux obtenus, qui ne fausse pas cette séquence.
    C'est à dire que si ma séquence de nombres décimaux présente un certaine périodicité par exemple, cela doit pouvoir se retrouver dans la séquence binaire...
    La binarisation doit gommer au minimum (le mieux étant pas du tout bien sûr) les imperfections de ma séquence...

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par cs_ntd Voir le message
    Ce que je veux c'est trouver une méthode de représentation binaire de la séquence de nombres décimaux obtenus, qui ne fausse pas cette séquence.
    C'est à dire que si ma séquence de nombres décimaux présente un certaine périodicité par exemple, cela doit pouvoir se retrouver dans la séquence binaire...
    La binarisation doit gommer au minimum (le mieux étant pas du tout bien sûr) les imperfections de ma séquence...
    Pourquoi faire intervenir la "binarisation" dans ton problème.

    De toutes façons, représenter une séquence de chiffres (0...9) sous forme de séquence binaire, en total bijection, nécessiterait de faire des paquets de 3,32192809... bits.

    Enfin, mettons que tu as cette fameuse séquence binaire, comment l'utiliserais tu pour en déduire que ton générateur est "aléatoire" ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Je cherche à VERIFIER si mon générateur est aléatoire ou non.
    J'ai la réponse!
    Il ne l'est pas...
    car aucun ne l'est.
    On ne sait pas produire le hasard en machine. On sait seulement produire des séries de nombres pseudo aléatoires par un des algorithmes que tu trouveras sur le wiki.
    Maintenant si tu veux tester la qualité d'un générateur pseudo aléatoire 'ready-made' devant générer une distribution de tel ou tel type (uniforme -Gauss- Poisson, etc...) il existe un outil statistique pour cela c'est le test dit du Khi-deux.
    http://fr.wikipedia.org/wiki/Test_du_%CF%87%C2%B2
    Ce test de permettra de valider ton hypothèse (par exemple d'uniformité) avec un certain seuil de tolérance prédéfini. Cette binarisation ne me semble d'aucune utilité.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Générer une table de nombres aléatoires
    Par kikou0704 dans le forum MATLAB
    Réponses: 3
    Dernier message: 12/07/2013, 22h59
  2. Générer une matrice avec nombre aléatoires
    Par Ryu0174 dans le forum Général Python
    Réponses: 5
    Dernier message: 23/05/2012, 21h40
  3. Réponses: 9
    Dernier message: 22/05/2006, 09h17
  4. Réponses: 8
    Dernier message: 02/12/2005, 18h07
  5. [FLASH MX] Choisir un nombre aléatoire dans une liste
    Par grenatdu55 dans le forum Flash
    Réponses: 4
    Dernier message: 23/04/2005, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo