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 :

Nombre "aléatoire" entre 0 et 1 : où est le 0 et le 1 ?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 143
    Points : 62
    Points
    62
    Par défaut Nombre "aléatoire" entre 0 et 1 : où est le 0 et le 1 ?
    Bonjour ,

    Pouvez-vous me dire pourquoi , lorsque j'utilise une fonction permettant de générer des nombres aléatoire entre 0 et 1 , ces valeurs n'apparaissent jamais ?

    Du coup si je veux un tirage entre -10 et +10 avec cette syntaxe : 20*rnd-10 ; les valeurs -10 et +10 ne sont pas listées dans la série de nombres aléatoires.

    Merci.

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Théoriquement TOUT les nombres ont la même probabilité d'apparaitre.
    Disons que la précision de tes nombres est de 0,0001. Du coup la probabilité d'avoir un 0 ou un 1 est de 1 / 10001, ce qui est extrêmement faible et qui l'est en réalité encore plus car la précision des nombres est BEAUCOUP plus faible.

    Ensuite ta formule est juste pour avoir des nombres entre -10 et 10, mais le problème reste le même pour avoir -10 ou 10.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 143
    Points : 62
    Points
    62
    Par défaut
    cela veut-il dire qu'il est impossible d'avoir un tirage aléatoire [0;1] ?

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Du coup la probabilité d'avoir un 0 ou un 1 est de 1 / 10001
    Pardon, mais je crois que c'est plutôt le contraire: 0 a une chance sur 10 000 de sortir et 1 ne sort jamais. De la même façon qu'un octet a 256 valeurs possibles et 256 n'est jamais atteint car l'étendue est de 0 à 255.

    @macErmite: Lis la documentation de ta fonction de tirage aléatoire, et tu verras, dans les petites lignes, que 0 est inclus et 1 exclus. Formule mathématique
    Sans parler des langages qui ne tirent que des nombres entiers.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 143
    Points : 62
    Points
    62
    Par défaut
    Y a t il un moyen de contourner l'exclusion de 1 , quitte à coder sa propre fonction ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par macErmite Voir le message
    Pouvez-vous me dire pourquoi , lorsque j'utilise une fonction permettant de générer des nombres aléatoire entre 0 et 1 , ces valeurs n'apparaissent jamais ?
    .
    Euh....

    Quelle fonction ? de quel logiciel ??


    En général, ces fonctions ont une documentation...

    Qui devrait expliquer comment s'en servir..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Citation Envoyé par macErmite Voir le message
    Y a t il un moyen de contourner l'exclusion de 1 , quitte à coder sa propre fonction ?
    Au lieu de tirer un nombre directement, tu as peut-être accès à une primitive de plus bas niveau pour récupérer un bit aléatoire à la fois (comme en Java).
    Sinon, plus simplement, si tu souhaites un nombre entier entre -10 et 10, tu peux faire passer ton nombre entre -10,5 et 10,5 puis arrondir (Formule mathématique), de telle sorte que chaque valeur en sortie est associée à un "bac" de largeur constante (sans ça, les valeurs -10 et 10 sont moins probables que les autres).
    Si tu veux un nombre à virgule flottante, le comportement attendu est le seul cohérent .
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    L'infini et l'informatique, ça fait deux.

    Même si tu crois qu'il tire n'importe quel nombre entre 0 et 1, en fait il n'y a qu'un nombre fini de valeur.

    Comme Dourouc05, je conseille de tirer un nombre entier (fourni, par exemple, sous Linux par les fichiers /dev/random et /dev/urandom), et de re-répartir selon ton goût:
    0 1
    0 0.5 1
    0 0.25 0.5 0.75 1
    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
    etc...
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

Discussions similaires

  1. [XL-2010] Générer un nombre aléatoire entre 1 et 9999
    Par GADENSEB dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 31/08/2014, 10h48
  2. [Débutant] Nombre aléatoire entre 0 et 100!
    Par iVarlix dans le forum C#
    Réponses: 1
    Dernier message: 25/06/2014, 21h13
  3. Réponses: 1
    Dernier message: 02/04/2010, 17h43
  4. Generer un nombre aléatoire entre 0 et 1
    Par Eclipse39 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/02/2009, 21h26
  5. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30

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