Petits calculs en vb - VB/VBA/VBS - Programmation
Marsh Posté le 13-06-2004 à 18:55:18
modulo : x mod y
random :
Dim MyValue
' Renvoie une valeur aléatoire comprise entre 1 et 6.
MyValue = Int((6 * Rnd) + 1)
Marsh Posté le 13-06-2004 à 18:58:59
Pour diviser avec arrondi à l'inferieur,je crois que faut utiliser \ et pas /.
Marsh Posté le 13-06-2004 à 19:01:58
Modulo -> Mod
pour les nb aléatoires : Rnd je crois, mais il me semble que ça genere un truc entre 0 et 1 donc il y a un retraitement à faire derriere
pour l'arrondi je sais plus trop. ça doit être tout bête. il y a une fonction Round, mais elle arrondie soit à un décimal, soit un entier, et à celui qui est le plus proche donc spabon...
Marsh Posté le 13-06-2004 à 19:34:04
Pour le \ c'est bon fait un arrondi a l'inferieur.
Par contre petit probleme pour le rand. Il me tire bien aleatoirement un chiffre mais le probleme c'est qu'il me tire tout le temps les meme chiffres quand je lance le programme.
Par exemple il tirera toujours 4 puis 6 .....
J'aimerais qu'il tire des nombres aleatoires mais differents entre chaques executions.
Je sais que en c++ il faut changer la valeur du noyau rand (avec srand unsigned je ne sais plus trop c'est comment) mais en vb par contre aucune idée.
Il faudrais en gros que le programme me tire 2 valeurs comprises entre 2000 et 4000 mais differentes entre elles à chaques executions
Marsh Posté le 13-06-2004 à 21:58:28
avanr ton rnd faut que tu fasses un
randomize
en fait à chaque fois que t'utilises la fonction rnd,tu mets un randomize sur la ligne du dessus,ça initilise le générateur (pseudo) aléatoire.
Marsh Posté le 14-06-2004 à 00:08:57
je met comment le randomise?
randomize
MyValue = Int((6 * Rnd) + 1)
?
Marsh Posté le 14-06-2004 à 00:30:23
paris5 a écrit : |
bah si a chaque foi il te fait un arrondi au supérieur tu retranche 1 au resultat que tu obtiens
x := int(y)-1 ;
Marsh Posté le 14-06-2004 à 11:50:41
tiens essaye avec ça :
Private Sub Form_Load()
For i = 1 To 10
Label1.Caption = Label1.Caption & Chr(32) & Random(2000, 4000)
Next i
End Sub
Private Function Random(ByVal Low As Long, ByVal High As Long) As Long
Randomize
Random = Int((High - Low + 1) * Rnd) + Low
End Function
Marsh Posté le 14-06-2004 à 13:28:00
ok totalrecall j'essaye ca et jte dit si c'est ok
pour pinguin007: imagine je fais 4/2=2 jusqu'a la ok pas de soucis il fait pas d'arrondi puisque ca tombe sur un nombre entier et je retranche 1 4/2=1
donc c'est faux.
Marsh Posté le 14-06-2004 à 19:18:46
paris5 a écrit : ok totalrecall j'essaye ca et jte dit si c'est ok |
hum exacte en fait ca devrazs plutot être un truc du genre :
IF a/b = int(a/b) THEN x := a/b ELSE x := int(a/b)-1 ;
Marsh Posté le 13-06-2004 à 18:23:26
Pour effectuer des petits calculs en vb j'aurais besoin de savoir 3 trucs:
- comment on fait un modulo
- comment on fait pour tirer un nombre au hasard (rand() en c++ mais je cherche l'equivalent en vb)
- comment on fait une division avec arrondi au plus petit d'un entier à un autre (par exemple je fais 31/60 ce qui donne 0.51 et il me met 1 dans l'entier alors que je veux qu'il me mette 0)
Merci de votre gentilesse et bonne soirée