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

C Discussion :

la fonction pseudo-random


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut la fonction pseudo-random
    Bonjour a tous,

    Est-ce que quelqu'un sait comment écrire une fonction qui return une valeur random et n'utilise pas les librairies <stdlib.h> et <time.h>?

    merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Sous nux, tu ouvres un flux en lecture sur /dev/random et tu lis quelques octets.
    Sous Windows, tu peux utiliser la CryptoAPI et sa fonction CryptGenRandom().

    Mais je suppose que ton exercice consiste plutôt à trouver un algorithme de génération pseudo-aléatoire (j'en ai vu dans mes cours de "simulation" en école d'ingé), et de l'implémenter en C.

    PS: <stdlib.h> et <time.h> ne sont pas des bibliothèques ("librairie" est un anglicisme sur un faux-ami), mais des fichiers d'en-tête de la bibliothèque standard du C.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Tu trouveras le pseudo-code pour un algo tel que Mersenne Twister ici: http://en.wikipedia.org/wiki/Mersenne_Twister

    Avec une implantation en C ici: http://www.cs.hmc.edu/~geoff/mtwist.html

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Scorpi0
    Invité(e)
    Par défaut
    Au passage, une question tout bête, comment initialiser un algo tel que Mersenne Twister autrement qu'avec le concept du temps ?

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu ne peux pas avoir un truc imprévisible.
    Mais tu peux l'initialiser avec ton ID de processus, ou tout simplement demander la "graine" à l'utilisateur (typiquement dans le cas d'un logiciel de simulation)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Scorpi0 Voir le message
    Au passage, une question tout bête, comment initialiser un algo tel que Mersenne Twister autrement qu'avec le concept du temps ?
    Pourquoi l'utilisation du temps ne te convient-elle pas ?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Si j'ai bien compris, parce que c'est un exercice et qu'il n'a pas le droit.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Scorpi0 Voir le message
    Au passage, une question tout bête, comment initialiser un algo tel que Mersenne Twister autrement qu'avec le concept du temps ?
    Bah, c'est pas évident. Il n'y a pas d'horloge temps réel sur ta plateforme ?

  9. #9
    Scorpi0
    Invité(e)
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Bah, c'est pas évident. Il n'y a pas d'horloge temps réel sur ta plateforme ?
    Non non, pour moi c'était une question de curiosité. J'ai cherché à droite à gauche, trouvé plusieurs solutions (notamment le process ID comme Médinoc l'avait dit).

    Sur linux à priori, il y a la commande /dev/random qui permet de récupérer une graine sympatoche.

    http://en.wikipedia.org/wiki/Urandom

    Pour la petite histoire, je suis tombé sur un lien ou des universitaire avait craqué les mdp netscape car il s'était rendu compte que le random de netscape se basait sur l'heure et l'ID process ^^

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par solar Voir le message
    Est-ce que quelqu'un sait comment écrire une fonction qui return une valeur random et n'utilise pas les librairies <stdlib.h> et <time.h>?
    C'est sûrement possible (grands nombres premier, Mersenne Twister... est ton ami) mais pourquoi cette question ? Tu es sur une plateforme exotique qui n'a pas de bibliothèque C ?

Discussions similaires

  1. Fonction pseudo aléatoire
    Par smart_azo14 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 13/06/2014, 22h42
  2. Réponses: 10
    Dernier message: 24/07/2012, 14h06
  3. Fonction de random
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 2
    Dernier message: 30/06/2010, 11h41
  4. probléme avec le fonction math.random()
    Par dv-2008 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 19/03/2008, 20h32
  5. Fonction System.Random ?
    Par Luffy49 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/05/2007, 12h47

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