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

 .NET Discussion :

Un random dans une boucle for


Sujet :

.NET

  1. #1
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut Un random dans une boucle for
    Bonsoir mes amis.
    Je veux instancier un tableau avec des chiffres aléatoires. Avec le code suivant ça marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Module Module1
     
        Sub Main()
            Dim tablo1() As Integer = {1, 2, 3, 4, 5, 6}
            Dim tablo2(5) As Integer
            Dim hasard As New Random
            For i As Integer = 0 To 5
     
                Dim x As Integer = hasard.Next(0, 6)
                tablo2(i) = tablo1(x)
            Next
            For Each elem In tablo2
                Console.WriteLine(elem)
            Next
            Console.ReadKey()
     
        End Sub
     
    End Module
    Par contre quand je mets "Dim hasard As New Random" à l'intérieur de la boucle, j'ai le même chiffre dans tablo2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Module Module1
     
        Sub Main()
            Dim tablo1() As Integer = {1, 2, 3, 4, 5, 6}
            Dim tablo2(5) As Integer
     
            For i As Integer = 0 To 5
                Dim hasard As New Random 
                Dim x As Integer = hasard.Next(0, 6)
                tablo2(i) = tablo1(x)
            Next
            For Each elem In tablo2
                Console.WriteLine(elem)
            Next
            Console.ReadKey()
     
        End Sub
     
    End Module
    Je ne comprends pas la logique du 2ème code
    Merci
    J'apprends la programmation pour le plaisir

  2. #2
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Bonjour,

    La classe Random est ce qu'on appelle un générateur de nombres "Pseudo" aléatoires.. On la considère comme suffisamment aléatoire pour un usage courant.
    Si on instancie plusieurs fois cette classe avec la même "graine" (seed), la série de nombres générée sera toujours la même.
    Lorsqu'on ne précise pas de graine, la classe se base sur l'heure.

    Lorsque tu instancies la classe dans la boucle for, les créations sont tellement rapides qu'il y a de très fortes chances que la graine soient identiques pour toutes les instances, ce qui explique que les nombres soient identiques dans le second exemple.
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  3. #3
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Bonjour
    Merci pour cette explication claire (c'était impossible à deviner)
    J'apprends la programmation pour le plaisir

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

Discussions similaires

  1. C++ - Cplex problem de variable dans une boucle for & random
    Par tranenengel dans le forum C++/CLI
    Réponses: 2
    Dernier message: 27/03/2013, 08h14
  2. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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