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

VB.NET Discussion :

Nombres aléatoires différents


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut Nombres aléatoires différents
    Bonjour,

    J'aimerai génerer une liste de nombres aléatoires entre 1 et 30
    j'ai besoins des 30 chiffres compris entre 1 et 30 et il ne faut pas qu'il y aie un chiffre identique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To 30
        tab(i) = CInt((30) * Rnd())
        Label1.Text = tab(i)
    Next i
    Avec ce code des chiffres identiques reviennent.

    En fait il me faut tous les chiffre de 1 à 30, je sais trier mais pas mélanger
    Merci d'avance
    Fikou

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par fikou
    Bonjour,

    J'aimerai génerer une liste de nombres aléatoires entre 1 et 30
    j'ai besoins des 30 chiffres compris entre 1 et 30 et il ne faut pas qu'il y aie un chiffre identique.
    Désolé, mais ta demande semble contradictoire;

    que veux tu faire ? tirer aléatoirement 30 nombres compris entre 1 et 30 ? essaye d'être plus précis, merci.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Re et merci pour ta réponse rapide.

    En fait j'aimerai faire un tirage au sort.
    30 personnes 30 numéros différents compris entre 1 et 30.
    Peut on faire une sorte d'énumération de de 1 à 30 et la mettre dans le désordre ???
    FikoU

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par fikou
    En fait j'aimerai faire un tirage au sort.
    30 personnes 30 numéros différents compris entre 1 et 30.
    Peut on faire une sorte d'énumération de de 1 à 30 et la mettre dans le désordre ???
    FikoU
    Tout d'abord, le générateur pseudo-aléatoire de .Net est comme la pluspart des générateurs de ce type seulement pseudo-aléatoire; en clair, une équiprobabilité des tirages n'est absolument pas garantie.

    De même, il n'y a aucun moyen de lui dire de sortir un nombre garanti comme différent des n derniers nombres tirés.

    Par ailleurs, quand le générateur est initialisé à partir d'une "graine" donnée, il sort toujours la même séquence de nombre.

    Une solution est d'utiliser par exemple l'heure pour réinitialiser la séquence de tirage; mais encore une fois, ne pas d'attendre à une distribution équitable.

    Un vrai générateur ne doit sortir que 0 ou 1, et cela de maniére équiprobable sur "un certain temps". (autant de 0 que de 1 sur un grand nombre de tirage).

    Je me rapelle que j'avais bricolé un truc comme cela qui utilisait comme source le "bruit de fond" du réseau.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par fikou
    Bonjour,

    J'aimerai génerer une liste de nombres aléatoires entre 1 et 30
    j'ai besoins des 30 chiffres compris entre 1 et 30 et il ne faut pas qu'il y aie un chiffre identique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To 30
        tab(i) = CInt((30) * Rnd())
        Label1.Text = tab(i)
    Next i
    Avec ce code des chiffres identiques reviennent.

    En fait il me faut tous les chiffre de 1 à 30, je sais trier mais pas mélanger
    Merci d'avance
    Fikou


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    randomize
    dim list_nb(30) as integer
     
    for i as integer = 1 to 30
      list_nb(i) = i
    next
     
    for i as integer = 30 to 1
      msgbox(list_nb(cint(rnd*i)) ' ici se trouve le nombre aléatoire
      list_nb(cint(rnd*i)) = list_nb(i) ' la on met dans sa case le numéro qui se trouve en dernier
      redim preserve list(i) ' ici on retire la derniere case
    next
    avec un truc dans le genre ca devrait etre bon ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 314
    Par défaut
    Salut Sperot51 et merci

    Je n'arrivae pas à faire tourner ton code.
    J'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For i = 0 To 30
        iTrans = CInt((30) * Rnd())
        sComp = CStr(iTrans)
        sCompare = sCompare & "-" & sComp & "-"
        b = sCompare.Contains(sComp.ToString)
        If Not b Then
           tab(i) = iTrans
        End If
        Label1.Text = CStr(tab(i))
    Next
    Ce que je ne comprend c'est que b est toujours à true même si il y a des doublons (c'est pour cette raison que j'ai mis des tirets mais cela ne change rien)

    FikoU

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    C'est très sale comme approche.
    Tu pourrais au moins stocker les valeurs déjà tirées dans un tableau d'entier :
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

Discussions similaires

  1. générer des nombres aléatoire différents
    Par kochfet dans le forum Langage
    Réponses: 2
    Dernier message: 14/05/2014, 11h59
  2. Avoir 10 nombres aléatoires différents
    Par alex2746 dans le forum Débuter
    Réponses: 14
    Dernier message: 03/01/2010, 23h43
  3. Génération de nombres aléatoires différents
    Par The Wretched dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/08/2009, 18h16
  4. Tirer 3 nombres aléatoires différents
    Par uado dans le forum ASP
    Réponses: 3
    Dernier message: 23/05/2006, 10h30
  5. Génération de n nombres aléatoires différents
    Par progfou dans le forum Probabilités
    Réponses: 3
    Dernier message: 13/12/2005, 18h29

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