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 :

Nombre aléatoire unique


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut Nombre aléatoire unique
    Bonjour,
    Je souhaite pourvoir générer des nombre (ou des id) aléatoires uniques.
    L'idéal serait un truc basé sur l'heure exacte, un peu comme ce que peut générer oracle...
    Existe-t-il un moyen s'il vous plait ?

    Merci d'avance.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Je souhaite pourvoir générer des nombre (ou des id) aléatoires ...
    La fonction Random est là pour cela.
    ... uniques.
    La solution consiste à éliminer des tirages les nombres déjà trouvés.

  3. #3
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Quelque chose du genre peut-être si vous voulez vous baser sur la date et l'heure à la milliseconde pret:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DateTime CurrentTime = DateTime.Now;
                string id = "";
     
                id = CurrentTime.Year.ToString() + CurrentTime.Month.ToString() + CurrentTime.Day.ToString() + CurrentTime.Hour.ToString() + CurrentTime.Minute.ToString() + CurrentTime.Second.ToString() + CurrentTime.Millisecond.ToString();
    Graffito a répondu en même temps que moi.

    Je pensais effectivement à Random mais qui peux tomber plusieurs fois sur le même nombre.

  4. #4
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par poussinvert Voir le message
    Je souhaite pourvoir générer des nombre (ou des id) aléatoires uniques.
    L'idéal serait un truc basé sur l'heure exacte, un peu comme ce que peut générer oracle...
    Existe-t-il un moyen s'il vous plait ?
    Si tu veux être sûr d'être unique tu ne peux pas te baser sur l'heure car si tu génères trop rapidement tes nombres il est possible que tu ais 2 fois le même nombre.
    De même avec la classe Random, rien ne garanti l'unicité. Cependant si tu souhaites utiliser la classe Random tu peux conserver la liste des nombres générés et vérifier que le nombre généré n'est pas déjà utilisé (et en regénéré un autre si besoin).

    Si tu n'es pas obligé d'avoir des nombres tu peux te tourner vers les Guid (Guid.NewGuid)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    Merci pour vos propositions
    A mon avis il est difficile de tomber deux fois sur le même nombre quand on utilise l'heure jusqu'aux millisecondes pour générer des id uniques.

    ...mais, qu'est-ce donc un Guid ?

    En effet, je ne suis pas obligé d'avoir des int... mon id c'est d'avoir des clefs uniques pour des objets de type SortedList.

  6. #6
    Membre actif
    Homme Profil pro
    Chef de Projet
    Inscrit en
    Décembre 2012
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef de Projet
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 113
    Points : 260
    Points
    260
    Par défaut
    Bonsoir,

    si l'idée est juste d'avoir des clés uniques, alors le Guid est effectivement une bonne solution. De plus, c'est unique non pas localement, mais globalement (avant que deux ordinateurs différents puissent générer un doublon bon courage !)

    Un Guid est de la forme 3F2504E0-4F89-11D3-9A0C-0305E82C3301 et son nom signifie "Globally Unique Identifier" ^^

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    mon id c'est d'avoir des clefs uniques pour des objets de type SortedList.
    Quel est donc l'intéret de mettre clés aléatoires dans une SortedList ?

  8. #8
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par poussinvert Voir le message
    A mon avis il est difficile de tomber deux fois sur le même nombre quand on utilise l'heure jusqu'aux millisecondes pour générer des id uniques.
    Ca dépend à quelle vitesse tu génères tes nombres mais ce n'est pas du tout à exclure.

    Citation Envoyé par poussinvert Voir le message
    ...mais, qu'est-ce donc un Guid ?
    GUID : Globally Unique IDentifier (identificateur global unique)
    http://msdn.microsoft.com/fr-fr/libr...d.newguid.aspx

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par ElTotor Voir le message
    Bonsoir,

    si l'idée est juste d'avoir des clés uniques, alors le Guid est effectivement une bonne solution. De plus, c'est unique non pas localement, mais globalement (avant que deux ordinateurs différents puissent générer un doublon bon courage !)

    Un Guid est de la forme 3F2504E0-4F89-11D3-9A0C-0305E82C3301 et son nom signifie "Globally Unique Identifier" ^^
    Ah d'accord super merci.

    Citation Envoyé par Graffito Voir le message
    Quel est donc l'intéret de mettre clés aléatoires dans une SortedList ?
    En fait, je serialize une liste d'objets dans des fichiers bin.
    Quand je veux les récupérer, je souhaiterais aussi les manipuler, et si j'en supprime un, ou si je le modifie, je le récupère avec la clef.
    Enfin c'est comme ça que je pensais faire...

Discussions similaires

  1. Génération d'une nombre aléatoire unique
    Par jopont dans le forum BIRT
    Réponses: 18
    Dernier message: 30/06/2013, 08h49
  2. [Tableaux] 5 nombres aléatoires uniques
    Par jiojio dans le forum Langage
    Réponses: 8
    Dernier message: 06/03/2009, 13h45
  3. Un champs de nombres aléatoires uniques qui ne se suivent pas ?
    Par muad'dib dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/04/2008, 13h53
  4. nombre aléatoire unique
    Par Alex35 dans le forum VB.NET
    Réponses: 20
    Dernier message: 08/01/2008, 17h22

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