La fonction Rnd me donne toujours la même valeur

Résolu/Fermé
yaorens Messages postés 205 Date d'inscription dimanche 5 avril 2009 Statut Membre Dernière intervention 30 mai 2013 - 13 déc. 2012 à 10:41
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 13 déc. 2012 à 20:30
Bonjour,

je veux d'abord, lister chaque dosssier et sous dossier , dans un tableu de string , et ensuite après, choisir un dossier au hazard dans la liste de dossiers , mais à chaque fois que j'utilise la fonction Rnd() , elle me donne toujours la même valeur , pourriez vous m'aidez , voici mon code :
 Try
            'je recupère d'abord chaque dossier parent 
            Dim dossier As String() = Directory.GetDirectories(noyau)

            Dim nouveaudossier As String
            For Each nouveaudossier In dossier



                ' pour chaque dossier , je verifie s'il ne comporte pas des sous dossier

                If Directory.Exists(nouveaudossier) Then
                    ' s'il existe des sous dossier dans nouveau dossier , alors :
                    final(i) = nouveaudossier

                    i += 1

                    recuperedossier(nouveaudossier)
                Else
                    ' sinon , je sauvegarde dans 
                    final(i) = nouveaudossier

                    i += 1
                End If

            Next nouveaudossier

            'à la fin , je passe au second dossier parent 

            taillefinal = i - 1
        Catch ex As Exception

        End Try


ensuite , je choisi un dossier aléatoire dans mon tableau comprenant des dossiers
 Public Sub DossierOptionnel()



        dossieroptionnel1 = final(Rnd() * taillefinal)
        MsgBox(" le dossier optionnel 1 vaut : " & dossieroptionnel1)
End Sub 


pourriez vous m'aider ??

4 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 13/12/2012 à 11:11
Bonjour yaorens,

Il faut utiliser Randomize, puis le Rnd

Edit:
code:
	Randomize()
	msgbox = Int(Rnd() * taillefinal).ToString
0
yaorens Messages postés 205 Date d'inscription dimanche 5 avril 2009 Statut Membre Dernière intervention 30 mai 2013 7
13 déc. 2012 à 13:26
Ok , merci beaucoup , mais alors , si je veux faire deux nombre aléatoire par exemple à chaque fois , je fais un randomise() avant chaque génération aléatoire
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
13 déc. 2012 à 14:54
yaorens,

si je veux faire deux nombre aléatoire par exemple à chaque fois :
Prenons l'exemple du lotto.
Tu veux tirer au sort 6 nombres sur 45 (= 1 mise), mais cette semaine, tu veux remplir un bulletin de 10 mises :
	Randomize() ' pour chaque mise
	Int(Rnd() * taillefinal).ToString ' par boule
0
yaorens Messages postés 205 Date d'inscription dimanche 5 avril 2009 Statut Membre Dernière intervention 30 mai 2013 7
13 déc. 2012 à 20:28
ok merci , c'est assez clair , merci
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
13 déc. 2012 à 20:30
Ce fut un plaisir .. @ très bientôt
0