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 :

Générer un positif aléatoirement


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    chômeur
    Inscrit en
    Septembre 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : chômeur

    Informations forums :
    Inscription : Septembre 2015
    Messages : 175
    Par défaut Générer un positif aléatoirement
    Bonjour ,

    Je veux créer un algorithme qui génére un positif aléatoirement , puis s'arréte quand c'est fait .

    Je sais que je dois utiliser une boucle , mais je ne sais pas comment ?

    Avez-vous une piste , des idées ?

    En gros ça donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
        loop
               choix_positif : Positive ;
     
             --ensuite une valeur exacte positive est généré 
     
        exit loop

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Cette question est aussi mal posée qu'elle est insoluble.

    Voyons point par point.

    Je veux créer un algorithme qui génére un positif aléatoirement
    Tu veux créer un algorithme ? Les machines sont fabriquées pour obéir au doigt et à l'oeil. Elles sont donc incapables de créer un processus réellement aléatoire. Si ton objectif est cryptographique, il faut lire la documentation spécialisée.

    Tu veux probablement simplement utiliser la fonction de génération aléatoire imparfaite fournie par de nombreux langages de programmation ? Mais ici, c'est un sous-forum d'algorithmes. Le langage ne compte pas.

    , puis s'arréte quand c'est fait (...) je dois utiliser une boucle
    Contradictoire.
    Soit tu fais une opération unique, soit tu fais une boucle. Pas les deux.

    Je sais que je dois utiliser une boucle
    Où as-tu lu cela ?

    En gros ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        loop
               choix_positif : Positive ;
     
             --ensuite une valeur exacte positive est généré 
     
        exit loop
    En gros, moi Tarzan. Toi Jane ?

  3. #3
    Membre très actif
    Homme Profil pro
    chômeur
    Inscrit en
    Septembre 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : chômeur

    Informations forums :
    Inscription : Septembre 2015
    Messages : 175
    Par défaut
    Bon , oublions le langage et le boucles .

    Je pense avoir une piste =
    https://fr.wikipedia.org/wiki/Indica...re_et_notation

    D'aprés mes cours elle était utilisée dans la cryptographie , et peut générer un nombre positif ou naturel .

    Maintenant , comment utiliser ces fonctions génératrices ?

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Quel est le but ?
    Pourquoi ne pas utiliser la fonction fournie par ton langage ?
    Pourquoi ne pas tirer des 0 et des 1 ?


    Je vais redire la même chose que précédemment mais autrement.
    Il faut casser le mythe : Les ordinateurs ne tirent pas de nombres aléatoires. On parle de "pseudo-aléatoires". Le processus est totalement déterministe. Mais on prend une part de l'information déterministe dont la logique nous échappe pour faire comme si c'était aléatoire.

    Exemple: je tire 1 si le nombre de millisecondes est impair et 0 s'il est pair. (Choisis ton horloge). J'obtiens:
    0110101011101010001101010101

    Et voilà! Un nombre apparemment totalement aléatoire !

    Tu veux échapper au "pseudo-" ? Tu ne peux pas.

    As-tu déjà entendu parlé de Blum Blum Shub ?

  5. #5
    Membre très actif
    Homme Profil pro
    chômeur
    Inscrit en
    Septembre 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : chômeur

    Informations forums :
    Inscription : Septembre 2015
    Messages : 175
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Quel est le but ?
    Pourquoi ne pas tirer des 0 et des 1 ?
    Je code un programme qui doit afficher une ou plusieurs valeur String en fonction du nombre ou chiffre qu'il a généré aléatoirement , avant.

    Donc , pour ne pas compliquer les choses , il faut qu'il puisse choisir ce nombre ou chiffre dans une intervalle non binaire .


    Citation Envoyé par Flodelarab Voir le message
    Pourquoi ne pas utiliser la fonction fournie par ton langage ?
    Quelle fonction ? Peux-tu être plus spécifique ?
    Pour info , je code en Ada .


    Citation Envoyé par Flodelarab Voir le message
    Il faut casser le mythe : Les ordinateurs ne tirent pas de nombres aléatoires. On parle de "pseudo-aléatoires". Le processus est totalement déterministe. Mais on prend une part de l'information déterministe dont la logique nous échappe pour faire comme si c'était aléatoire.
    Aurais-tu un exemple avec des non-binaires ?

    Citation Envoyé par Flodelarab Voir le message
    As-tu déjà entendu parlé de Blum Blum Shub ?
    Jamais , et je n'ai aucune idée de comment l'utiliser .

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 227
    Par défaut
    En langage Ada, il y a la fonction random() qui répond à ton besoin.

  7. #7
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Générer un positif aléatoirement
    Bonsoir,

    Citation Envoyé par Flodelarab Voir le message
    As-tu déjà entendu parlé de Blum Blum Shub ?
    Le lien renvoie à un article intéressant, qui donne envie d'approfondir le sujet (pour moi difficile, compte tenu de mes lacunes), et d'effectuer des tests graphiques sur des séries de nombres pseudo-aléatoires: voilà de nouvelles idées de programmation !

    Citation Envoyé par Flodelarab Voir le message
    Il faut casser le mythe : Les ordinateurs ne tirent pas de nombres aléatoires. On parle de "pseudo-aléatoires". Le processus est totalement déterministe. Mais on prend une part de l'information déterministe dont la logique nous échappe pour faire comme si c'était aléatoire.

    Exemple: je tire 1 si le nombre de millisecondes est impair et 0 s'il est pair. (Choisis ton horloge). J'obtiens:
    0110101011101010001101010101
    Et voilà! Un nombre apparemment totalement aléatoire !
    Cette suite l'est - à quelques restrictions près, liées à aux conditions matérielles d'éxécution - parce que les résultats obtenus découlent de la rencontre de deux séries causales indépendantes: le fonctionnement de l'horloge interne, et l'appui sur la touche déclenchant la sortie du résultat. Procéder de la sorte, c'est utiliser l'ordinateur comme un système physique, ici une roulette qui serait graduée de 0 à 999, avec des cases peintes en couleurs alternées. On obtiendrait encore un résultat semblable en demandant le nombre d'octets (modulo N) qui mesure le volume des fichiers temporaires accumulés dans le cache du navigateur (à condition bien sûr que celui-ci n'ait pas été vidé quelques instants auparavant, et que N ne soit pas trop grand) ... C'est en gros ce qui est fait lors de l'appel de randomize (ou son équivalent).

    C'est évidemment plus rapide et moins fatigant que d'aller sur le palier noter le nombre de litres affichés par le compteur de gaz, ou de se rendre à la plus proche station de carburant pour lire le nombre de centimes sur l'une des pompes (1) ... toutes machines à "fabriquer du hasard", qui répondent honorablement à tous les tests connus, de la même façon que le lancer de dés, le tirage de cartes (2) ou la consultation du bilan mensuel de votre carte bancaire (en centimes d'euros, modulo 1000).

    Cordialement, W.

    (1) procédés un peu rustres, mais diététiquement salutaires pour les accros de la programmation, peu soucieux de la promenade quotidienne.
    (2) le paquet ayant été battu par une personne à l'honnêteté irréprochable, cela va de soi.

  8. #8
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    D'ailleurs, il y a aussi des sources d'entropie directement sur certains processeurs, notamment derrière l'instruction RDRAND en x86, en exploitant du bruit thermique pour Intel.

    @wiwaxia : tes techniques génèrent-elles des nombres uniformément répartis ? Pour ton compteur à gaz, tu as une évolution temporelle : si tu connais la valeur précédente, tu peux déjà estimer pas mal sur la prochaine valeur, sauf peut-être sur les dernières décimales, en fonction de tes besoins. Tu risques donc de générer certains nombres plus souvent que d'autres, sans une totale indépendance statistique — pas des propriétés attendues, en général.
    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 !

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

Discussions similaires

  1. Générer une chaine aléatoire
    Par java_fun dans le forum Général Java
    Réponses: 24
    Dernier message: 07/11/2018, 23h03
  2. Réponses: 16
    Dernier message: 08/03/2006, 11h18
  3. Besoin de générer une chaine aléatoire
    Par warsky dans le forum Langage
    Réponses: 7
    Dernier message: 01/12/2005, 19h34
  4. générer un nombre aléatoire gaussien
    Par kayari dans le forum Probabilités
    Réponses: 9
    Dernier message: 24/05/2005, 23h57
  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