VB 2005 Express
Comment faire pour sortir un uniquement un nombre pair avec un random ?
posYgauche = CInt(Int((80 - 44 + 1) * Rnd() + 1))
En fait, j'ai besoin de multiple de 4 !
44, 48, 92, ...etc
Merci à l'avance,
A+
VB 2005 Express
Comment faire pour sortir un uniquement un nombre pair avec un random ?
posYgauche = CInt(Int((80 - 44 + 1) * Rnd() + 1))
En fait, j'ai besoin de multiple de 4 !
44, 48, 92, ...etc
Merci à l'avance,
A+
Si tu veux avoir que des nombres pairs, il suffit de tirer un nombre aléatoire dans une fenêtre 2 fois plus petite et multiplier le nombre tiré par 2.
Que voulez-vous dire par fenêtre plus petite ?
Essaye avec ca, j'ai pas testé mais ca pourrait t'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim valeur If valeur = Round((valeur / 2), 0) * 2 Then 'Test si PAIR If Int(valeur / 2) = valeur / 2 Then 'Test si multiple de 2 'ici ton code si le nb est pair et multiple de 2 End If End If
Mais non pour savoir si c'est pair, il faut vérifier si ce nombre est congru à 0 [2] :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim Nombre as Integer = Random..... 'récupère le nombre aléatoire Dim NombrePair as Integer If not Nombre Mod 2 = 0 Then 'si c'est impair NombrePair = Nombre * 2 'on le multiplie par 2 Else 'sinon NombrePair = Nombre 'c'est bon End If
Qui ne tente rien n'a rien !
Ce qui ne nous tue pas nous rends plus fort !!
Mon projet ZELDA en C++/Allegro
http://www.tutoworld.com - Le Forum -
Mes ressources Dotnet (cours, sources, tutos)
--------------------------------------------
+
+
=
Ne pas oublier le Tag!
merci, je test ca et je vous en redonne des nouvelles !
Pourquoi multiplier par deux et pas juste ajouter 1 ... sinon on aurai un nombre qui pourrai être en dehors de l'intervalle souhaitée ...
Après, si le nombre +1 est en dehors des valeurs souhaités, on fait juste -1 à la place ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim Nombre as Integer = Random..... 'récupère le nombre aléatoire Dim NombrePair as Integer If not Nombre Mod 2 = 0 Then 'si c'est impair NombrePair = Nombre + 1 Else 'sinon NombrePair = Nombre 'c'est bon End If
Qui ne tente rien n'a rien !
Ce qui ne nous tue pas nous rends plus fort !!
Mon projet ZELDA en C++/Allegro
http://www.tutoworld.com - Le Forum -
Mes ressources Dotnet (cours, sources, tutos)
--------------------------------------------
+
+
=
Ne pas oublier le Tag!
ext = NombrePair
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Nombre As Integer = CInt(Int((80 - 44 + 1) * Rnd() + 1)) 'récupère le nombre aléatoire Dim NombrePair As Integer If Not Nombre Mod 2 = 0 Then 'si c'est impair NombrePair = Nombre * 2 'on le multiplie par 2 Else 'sinon NombrePair = Nombre 'c'est bon End If TextBox1.T
End Sub
************************************
cela sort des nombres pair ... super !, mais ca sort en dehors du "range" entre 44 et 80 seulement!
*************************************
Je vais tester avec l'autre méthode du + 1 et -1
Je vous reviens !
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Nombre As Integer = CInt(Int((80 - 44 + 1) * Rnd() + 1)) 'récupère le nombre aléatoire
Dim NombrePair As Integer
If Not Nombre Mod 2 = 0 Then 'si c'est impair
NombrePair = Nombre + 1
Else 'sinon
NombrePair = Nombre 'c'est bon
End If
TextBox1.Text = NombrePair
End Sub
*************************
Ca sort toujours du "range" souhaité ?, mais ca sort des nombres pair aussi
Pourquoi il ne tiens plus compte du minimum et maximum que je lui demande ?
Partager