Petits calculs en vb

Petits calculs en vb - VB/VBA/VBS - Programmation

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

Reply

Marsh Posté le 13-06-2004 à 18:23:26   

Reply

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)
 
 

Reply

Marsh Posté le 13-06-2004 à 18:58:59    

Pour diviser avec arrondi à l'inferieur,je crois que faut utiliser \ et pas /.

Reply

Marsh Posté le 13-06-2004 à 19:01:58    

Modulo -> Mod :d
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 :p
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...

Reply

Marsh Posté le 13-06-2004 à 19:22:15    

ok lol merci beaucoup je vais tester tout ca

Reply

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

Reply

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.

Reply

Marsh Posté le 14-06-2004 à 00:08:57    

je met comment le randomise?
 
randomize
MyValue = Int((6 * Rnd) + 1)  
 
?

Reply

Marsh Posté le 14-06-2004 à 00:30:23    

paris5 a écrit :


 - 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


 
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 ;


---------------
LoD 4 ever && PWC spirit|Le topak de l'iMP-450|inDATOUNEwe trust
Reply

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

Reply

Marsh Posté le 14-06-2004 à 11:50:41   

Reply

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.

Reply

Marsh Posté le 14-06-2004 à 19:18:46    

paris5 a écrit :

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.


 
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 ;


---------------
LoD 4 ever && PWC spirit|Le topak de l'iMP-450|inDATOUNEwe trust
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed