vegetalain
Messages postés747Date d'inscriptionmardi 25 mars 2003StatutMembreDernière intervention11 août 2022
-
18 janv. 2009 à 07:13
vegetalain
Messages postés747Date d'inscriptionmardi 25 mars 2003StatutMembreDernière intervention11 août 2022
-
19 janv. 2009 à 17:01
Salut je mets ma question dans "algo", avec un léger doute mais bon :)
J'aimerais diviser un nombre entier en plusieurs partie, "inégales", genre au hasard.
Par exemple j'ai 50.
Je voudrais obtenir, disons... 12, 7, 18, 13 et non 25, 25, 25, 25.
est-ce réalisable?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 18 janv. 2009 à 07:44
exemple
Private Sub Form_Load()
Dim xnParts() As Long
Dim i As Long
Dim nVeriy As Long
xnParts = CrazyDivide(50, 4)
For i = 0 To UBound(xnParts)
Debug.Print xnParts(i);
nVeriy = nVeriy + xnParts(i)
Next i
Debug.Print ""
Unload Me
End Sub
Private Function CrazyDivide(ByVal vnNumber As Long, ByVal vnParts As Long) As Long()
Dim xnParts() As Long
Dim i As Long
If vnParts > 0 And vnParts < vnNumber Then
Rnd -1
Randomize
ReDim xnParts(vnParts - 1)
For i = 0 To vnParts - 2
Do
xnParts(i) = Rnd * vnNumber
Loop While xnParts(i) = 0 Or (vnNumber - xnParts(i)) < vnParts - i
vnNumber = vnNumber - xnParts(i)
Next i
xnParts(i) = vnNumber
End If
CrazyDivide = xnParts
End Function