Division folle

Résolu
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022 - 18 janv. 2009 à 07:13
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 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?

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
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
3
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
19 janv. 2009 à 17:01
Trop cool, ça marche impec ;) !

Merci Renfield !
0
Rejoignez-nous