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

Collection et Stream Java Discussion :

Génération de nombres aléatoires


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 103
    Points : 110
    Points
    110
    Par défaut Génération de nombres aléatoires
    Bonjour,
    Je me pose quelques questions concernant la génération de nombres aléatoires.
    Je veux pouvoir générer des nombres aléatoires mais éventuellement de manière reproductible.

    Je me demande donc quels seront les différences entre les séquences générées par les trois méthodes suivantes :
    1. Un générateur partagé par toutes les classes
    2. Un générateur pour chaque classe qui en a besoin
    3. Un générateur partagé qui initialise les seed des générateurs des autres classes


    D'après moi, la faille de la solution 1 est que l'on risque d'atteindre la période du générateur plus facilement.
    La solution 2 n'estpas très pratique à maintenir (reproductibilité).
    Je pencherai pour la solution 3 mais j'aimerais avoir votre avis.

    merci.
    Arnaud

    ps :est-ce qu quelqu'un a déjà essayé cette librairie : http://www.honeylocust.com/RngPack/ ?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le 1 est le plus simple, tant que tu peux garantir que l'ordre d'appel au générateur ne changera pas.
    Attention, si t'as plusieurs Threads, tu va avoir un problème. Lors de ta "reproduction", tu risque d'avoir les ordre d'appel des threads qui changent car çà peut varier suivant la charge de la machine!.

    Ce problème existe aussi avec un générateur pas classe.
    Par contre, je ne m'inquiéterais pas du cycle si j'était toi. Il est relativement grand et, comme plusieurs classes appellent chacune de leur coté le générateur, le second cycle pourrait très bien etre décalé dans la répartition par classe.

    Le point 3 n'est jamais qu'une variante du point 2,

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 103
    Points : 110
    Points
    110
    Par défaut
    Merci pour cette réponse.

    J'avais oublié de préciser que j'étais dans un cas mono-thread.
    Je pense que dans ce cas là, on peut garantir que pour une graine donnée, l'ordre d'appel ne changera pas.

    Par contre, je continue à m'inquiéter pour la période car le programme dans lequel je veux utiliser ces Random est un solveur de programmation par contrainte. On peut donc se retrouver à résoudre des problèmes NP-Complets et dans ce cas précis la période peut devenir problématique.

    C'est pourquoi, je pensais au point 3 qui me permet de maintenir plusieurs cycles en parallèle et la reproductibilité.
    En effet, le point 3 est similaire au point 2 mais plus facile à maintenir puisqu'on n'a qu'une seule graine à fixer pour assurer la reproductibilité de la séquence.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il faudrait regarder les documents mentionnées par Random, l'algorithme de pseudo random est clairement précisé, ce qui signifie que tu peux déterminer sa période

    Utiliser un random par classe *pourrait* allonger la période, mais peut etre une ou deux fois suivant la fréquence d'utilisation de ta classe la plus utilisée dans ton code.

Discussions similaires

  1. Réponses: 10
    Dernier message: 19/01/2012, 12h56
  2. Génération de nombre aléatoire
    Par zodzed dans le forum C
    Réponses: 4
    Dernier message: 20/07/2008, 10h42
  3. défaut des fonctions de génération de nombres aléatoire type rand()
    Par Christophe30 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 17/02/2008, 20h21
  4. Génération de nombre aléatoires
    Par rebaudo dans le forum Smalltalk
    Réponses: 1
    Dernier message: 29/11/2007, 12h54
  5. recherche algo de génération de nombre aléatoire
    Par Pascale38 dans le forum MFC
    Réponses: 2
    Dernier message: 26/01/2004, 14h20

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