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 :

Incompréhension avec un générateur de nombre aléatoire


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Informatique, programmation
    Inscrit en
    Novembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Informatique, programmation

    Informations forums :
    Inscription : Novembre 2010
    Messages : 33
    Par défaut Incompréhension avec un générateur de nombre aléatoire
    Salut,

    Pouvez-vous jetez un coup d’œil sur ce code et l’essayer et me dire le résulta
    de moyenne de sortie que vous obtenez !

    Pour essayer ce code, il faut une form avec un bouton simple.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Public Class Form1
     
        ' Objet sevant à générer un nombre aléatoire
        Dim GérérateurNombreAléatoire As New Random
     
        Function Random(ByVal Minimum As Integer, ByVal Maximum As Integer) As Integer
     
            ' Choisie un nombre aléatoire entre 0 et 32 = Nombre de colonne du tableau
            Dim PositionX As Integer = GérérateurNombreAléatoire.Next(0, 32)
     
            ' Choisie un nombre aléatoire entre 0 et 32 = Nombre de Ligne du tableau
            Dim PositionY As Integer = GérérateurNombreAléatoire.Next(0, 32)
     
            ' Variable recevant le nombre aléatoire
            Dim NombreAléatoire As Integer = 0
     
            ' Tableau servant à ranger les nombres aléatoire
            Dim TableauDeNombreAléatoire(32, 32) As Integer
     
            ' Génération du nombre aléatoire + Rangement du nombre aléatoire dans le tableau
            For Y As Integer = 0 To 32
                For X As Integer = 0 To 32
                    ' Génère plusieurs nombres aléatoire à la suite et prends le dernier sortie
                    ' Ceci sert pour éviter les répétitions de nombre aléatoire à la suite éventuel
                    For P As Integer = 0 To GérérateurNombreAléatoire.Next(0, 10)
                        NombreAléatoire = GérérateurNombreAléatoire.Next(Minimum, Maximum + 1)
                    Next
                    TableauDeNombreAléatoire(X, Y) = NombreAléatoire
                Next
            Next
     
            'Dim Chaine As String = ""
     
            'For Y As Integer = 0 To 32
     
            '    For X As Integer = 0 To 32
            '        Chaine += TableauDeNombreAléatoire(X, Y).ToString & "|"
            '    Next
     
            '    Chaine += vbCr
     
            'Next
     
            'Chaine += vbCr & vbCr & "X = " & PositionX & vbCr & "Y = " & PositionY & vbCr & vbCr & "Nombre Aléatoire choisie = " & TableauDeNombreAléatoire(PositionX, PositionY)
            'MsgBox(Chaine)
     
            Return TableauDeNombreAléatoire(PositionX, PositionY)
     
        End Function
     
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
     
            Dim MonNombreAléatoire As Integer = 0
            Dim MaListeDeNombre(100) As Integer
            Dim MonNombre As Integer = 0
            Dim MaChaine As String = ""
            Dim Passage As Integer = 0
            Dim Totale As Integer = 0
            Dim Moyenne As Double = 0
     
            For j As Integer = 1 To 24 ' Nombre de ligne
                For i As Integer = 1 To 25 ' Nombre de colonne
                    MonNombreAléatoire = Random(0, 100) ' Choisie un nombre aléatoire entre 0 et 100
                    MonNombre = MaListeDeNombre(MonNombreAléatoire) ' Prends le nombre aléatoire à la position de nombre aléatoire dans ma liste
                    MonNombre += 1 ' Ingrémentation du nombre pris dans ma liste de 1
                    MaListeDeNombre(MonNombreAléatoire) = MonNombre ' Remplacement du précédent nombre aléatoire pris dans ma liste par le nouveau = précédent + 1
                    Console.Write(MonNombreAléatoire & "-")
                Next
                Console.WriteLine("")
            Next
     
            For Each Nombre As Integer In MaListeDeNombre ' Récuperation de chaque nombre dans ma liste à partir du premier élément jusqu'au dernier
                Totale += Nombre ' Totale recoie en plus en addition le nombre actuellement lue dans ma liste
                MaChaine += "Le numéro " & Passage & " est sortie " & Nombre & " fois" & ", La moyenne actuel de tous les numéros sortie est de: "
                Passage += 1
                MaChaine += Totale / Passage & ", Le totale de sortie des numéros est de: " & Totale & vbCrLf
            Next
     
            Moyenne = Totale / Passage ' Calcule la moyenne de tous les nombres aléatoire sortie
     
            MaChaine += vbCrLf
            MaChaine += "La moyenne de sortie par numéro est de: (" & Totale & " Divisé par " & Passage & ") = " & Moyenne
     
            Clipboard.SetText(MaChaine)
            Console.ReadLine()
     
        End Sub
     
    End Class
    En se qui me concerne, j’obtiens à chaque fois une moyenne de 600 et 6
    C'est pas normale

    Pourquoi j'ai toujours un totale de 600 et une moyenne de sortie par numéro de 6

    J'ai même essayé de remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonNombreAléatoire = Random(0, 100)
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonNombreAléatoire = GérérateurNombreAléatoire.Next(0, 100)
    Mais c'est pareil

    C'est pas normale ça, ont ne devrait pas obtenir à chaque fois une moyenne identique, impossible même !

  2. #2
    Membre Expert


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

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Bonjour,

    Effectivement j'ai le même phénomène chez moi, mais je ne sais vraiment pas l'expliquer. Votre code m'a l'air cohérent à première vue.

    Une seule petite remarque, même si le compilateur l'accepte, éviter les caractères accentuées dans le nom des variables, fonctions etc.

    Je suis curieux de voir la réponse d'autres membres.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Membre actif
    Homme Profil pro
    Informatique, programmation
    Inscrit en
    Novembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Informatique, programmation

    Informations forums :
    Inscription : Novembre 2010
    Messages : 33
    Par défaut
    Effectivement j'ai le même phénomène chez moi, mais je ne sais vraiment pas l'expliquer.
    C'est vraiment super étrange comme phénomène
    Vraiment je ne comprends pas comment cela est possible !

    Votre code m'a l'air cohérent à première vue.
    Je vous remercie, je suis débutant donc le contraire ne m'aurais pas choqué

    Une seule petite remarque, même si le compilateur l'accepte, éviter les caractères accentuées dans le nom des variables, fonctions etc.
    Hum... Merci bien du conseil, cependant, pouvez-vous me dire svp pourquoi ?!
    En quoi cela gène t-il ou pose problème vue qu'a première vue cela fonctionne bien ?!

    Sinon pour mon problème, c'est incompréhensible vue que je pioche un nombre dans ma liste à une position de même aléatoire

  4. #4
    Membre Expert


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

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    C'est déconseillé dans les conventions de nommage (que je n'ai pas ici sous la main).

    Dites vous que Numéro sera différent de Numero. Donc à la relecture de votre code en cas de bug, on passe vite à coté
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  5. #5
    Membre actif
    Homme Profil pro
    Informatique, programmation
    Inscrit en
    Novembre 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Informatique, programmation

    Informations forums :
    Inscription : Novembre 2010
    Messages : 33
    Par défaut
    C'est déconseillé dans les conventions de nommage (que je n'ai pas ici sous la main).

    Dites vous que Numéro sera différent de Numero. Donc à la relecture de votre code en cas de bug, on passe vite à coté
    Oui je vois merci bien

    Pouvez-vous svp reprendre le code que j'ai modifier
    Je vous propose de regarder le résulta, c'est à ni rien comprendre

    Quoi qu'il fasse, c'est toujours pareil, les mêmes résultats en sortie alors que le déroulement du programme des nombres aléatoire est différent à chaque fois

  6. #6
    Membre Expert


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

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    J'y pers effectivement mon latin comme on dit ...

    J’espérais qu'un au membre aurait la réponse mais ca n'a pas l'air d'être le cas. A mon avis une petite bêtise qu'on n'a pas capté.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

Discussions similaires

  1. Générateur de nombres aléatoires avec contraintes
    Par byakuichi dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 13/04/2014, 21h57
  2. générateur de nombre aléatoire
    Par ndefta love dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/12/2006, 22h21
  3. Générateur de nombres aléatoires maxwelliens
    Par Selma_2037 dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/11/2006, 15h54
  4. Générateur de nombres aléatoires
    Par Grand sorcier dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 30/07/2006, 22h44
  5. Générateurs de nombres aléatoires
    Par Cheps dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 12/06/2006, 00h37

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