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

Langage Perl Discussion :

Du bon usage de l'aléatoire avec Perl 5.8.7


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut Du bon usage de l'aléatoire avec Perl 5.8.7
    Bonjour,

    pour les besoins d'un traitement de grande envergure, plusieurs programmes lancés successivement possèdent tous la ligne suivante dans le code :

    srand( time() ^ ($$ + ($$<<15)) );

    Avec une version + ou - moderne de Perl (ici, une 5.8.7 tournant sous Linux), je me demandais si l'usage de la fonction srand() ne devrait pas être utilisée qu'une seule fois par le 1er programme lancé ?

    Vos avis SVP ?

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Comme l'indique la doc de srand, il n'est pas nécessaire de l'appeler. Perl va automatiquement l'appeler au premier appel de rand, si tu n'a pas appelé srand explicitement. De plus la manière dont Perl appelle srand est bien plus aléatoire que ce que tu fais toi, donc ton code est non seulement inutile, mais il affaiblit aussi la génération de tes nombres aléatoires.

    Pour répondre à ta question, l'état du générateur de nombre aléatoire est limité au process courant. L'appel à srand que tu fais dans un process n'a aucune influence sur tes autres processes.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Citation Envoyé par matafan Voir le message
    De plus la manière dont Perl appelle srand est bien plus aléatoire que ce que tu fais toi, donc ton code est non seulement inutile, mais il affaiblit aussi la génération de tes nombres aléatoires.
    Ok, merci pour cette précision qui a son importance en ce qui me concerne

Discussions similaires

  1. [web] Présentation avec Perl/Tk
    Par Stephan COMBES dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 01/06/2004, 22h45
  2. update avec Perl
    Par mimilou dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/05/2004, 17h22
  3. Connexion avec Perl
    Par BARBIER dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/05/2004, 15h05
  4. faire des graphiques avec Perl
    Par And_the_problem_is dans le forum Modules
    Réponses: 2
    Dernier message: 16/07/2003, 17h08
  5. [reseaux] Comment creer un compte user à partir d'un formul avec perl
    Par oulai_evado dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 01/10/2002, 20h54

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