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 :

Algo pour générer des nombres aléatoires


Sujet :

Algorithmes et structures de données

  1. #1
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut Algo pour générer des nombres aléatoires
    Bonjour à tous,

    J'ai besoin d'un coup de main car je n'arrive pas a mes fins de manière propre.

    Je souhaite génerer un tableau de taille n contenant des nombres entier aléatoire allant de 1 à m, avec m => n.

    On ne peux pas utiliser une meme nombre plusieurs fois.

    Voila je seche un peu sur la manière la plus optimum pour faire ça mais je suis sur que parmis les genies qui sont sur le forum cela ne posera aucun soucis !

    Merci d'avance.

    PS : pour mon application le psedu-aléatoire des fonctions basés sur le date/time est suffisant.

  2. #2
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut
    Quel est le problème exactement?

    La plupart des langages proposent déjà des générateurs de nombres aléatoires, non ?
    Ou il faut en créer un pour des raisons particulières ?

    Pour ne pas générer plusieurs fois le même nombre, je pense qu'il est obligatoire de scruter toutes les cellules précédentes du tableau avant d'accepter la nouvelle valeur. Car justement, le principe d'un générateur de nombres aléatoires, c'est qu'on ne peut pas prévoir la valeur qui va sortir, on peut même avoir la même valeur qui sort plusieurs fois de suite...

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 002
    Points
    20 002
    Billets dans le blog
    67
    Par défaut
    Salut,

    Soit t1 ton tableau à générer (de taille n)

    Tu peux créer 1 autre tableau t2 (ou une liste) de dimension initiale m contenant tes m entiers.

    La 1ère fois tu génère 1 nombre aléatoire i entre 1 et m.
    Ce nombre i est l'indice de ton tableau t2:
    tu fais t1(1)=t2(i)

    Puis tu supprime t2(i) dans ton tableau t2 et tu redimensionne ce tableau t2 à (m-1) contenant le reste des valeurs. (sert toi eventuellement d'1 autre tableau)

    La 2ème étape tu génère 1 nombre aléatoire i entre 1 et (m-1)
    Ce nombre i est le 2ème indice de ton tableau t2:
    tu fais t1(2)=t2(i)

    etc..

    Jusqu'à: t1(n)=t2(i)

    @+

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 147
    Points : 155
    Points
    155
    Par défaut
    Un truc pour la génération de séquence aléatoire auquel on ne pense pas souvent sont les fonctions de hashage.

    Pour qu'elles aient une efficacité cryptologique, il faut qu'on soit incapable de remonter à l'antécédent à partir de l'image.
    Ca induit donc une sorte de hasard, par une image qui semble complètement aléatoire quelque soit l'antécédent.

    La référence dans le domaine : SHA1. Tu ne devrais pas avoir de problème pour en trouver des implémentations.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Merci déjà à tous pour vos réponse,

    L'idée de USER est la plus simple, c'est celle ci que j'ai décidé de coder.

    Citation Envoyé par sylk974
    Un truc pour la génération de séquence aléatoire auquel on ne pense pas souvent sont les fonctions de hashage.

    Pour qu'elles aient une efficacité cryptologique, il faut qu'on soit incapable de remonter à l'antécédent à partir de l'image.
    Ca induit donc une sorte de hasard, par une image qui semble complètement aléatoire quelque soit l'antécédent.

    La référence dans le domaine : SHA1. Tu ne devrais pas avoir de problème pour en trouver des implémentations.
    Je ne vois pas trop le rapport, SHA1 aussi bien que MD5 par exemple génère des chaines alphanumériques, moi j'ai besoin d'un nombre entier, dans un intervale fini. De plus MD5/SHA1 génère ces chaines par rapport à une autre chaine donné, donc si tu donne 3 fois la meme chaine, MD5/SHA1 te donnera le meme hashage. Moralité il faut alors faire un générateur pour générer la chaine à hasher....ya plus simple.

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 13/03/2011, 21h14
  2. Générer des nombres aléatoirement
    Par elghadi_mohamed dans le forum Langage
    Réponses: 2
    Dernier message: 02/11/2007, 13h15
  3. Réponses: 4
    Dernier message: 12/09/2006, 17h42
  4. Générer des nombres aléatoires
    Par nbeligh dans le forum C++
    Réponses: 6
    Dernier message: 05/09/2006, 17h05
  5. Réponses: 2
    Dernier message: 16/05/2006, 18h02

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