Division folle [Résolu]

Signaler
Messages postés
745
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015
-
Messages postés
745
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015
-
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?

2 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
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
Messages postés
745
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015

Trop cool, ça marche impec ;) !

Merci Renfield !