Private Function Makecombinaison() As List(Of String) 'on utilise 19 nombres de -0.9 à 0 à 0.9 'créer un truth table de 19 chiffres ' choisir les nombres binaires contenant sept 1 et calculer leur somme Dim strbinary As String Dim binarydigit As Char() Dim list1 As New List(Of String) Dim word1 As String = "ABCDEFGHI0123456789" Dim combinaison As String Dim count As Integer Dim sum As Double For iter = 1 To 2 ^ (word1.Length) - 1 strbinary = Convert.ToString(Convert.ToInt32(iter), 2) strbinary = strbinary.PadLeft(word1.Length, "0"c) binarydigit = strbinary.ToCharArray combinaison = String.Empty sum = 0 count = 0 For iter2 = 0 To binarydigit.Length - 1 If binarydigit(iter2) = "1" Then count += 1 binarydigit(iter2) = word1(iter2) Select Case word1(iter2) Case "A"c sum += -0.9 combinaison &= "-0.9 " Case "B"c sum += -0.8 combinaison &= "-0.8 " Case "C"c sum += -0.7 combinaison &= "-0.7 " Case "D"c sum += -0.6 combinaison &= "-0.6 " Case "E"c sum += -0.5 combinaison &= "-0.5 " Case "F"c sum += -0.4 combinaison &= "-0.4 " Case "G"c sum += -0.3 combinaison &= "-0.3 " Case "H"c sum += -0.2 combinaison &= "-0.2 " Case "I"c sum += -0.1 combinaison &= "-0.1 " Case "0"c sum += 0.0 combinaison &= " 0.0 " Case "1"c sum += 0.1 combinaison &= " 0.1 " Case "2"c sum += 0.2 combinaison &= " 0.2 " Case "3"c sum += 0.3 combinaison &= "0.3 " Case "4"c sum += 0.4 combinaison &= " 0.4 " Case "5"c sum += 0.5 combinaison &= " 0.5 " Case "6"c sum += 0.6 combinaison &= " 0.6 " Case "7"c sum += 0.7 combinaison &= " 0.7 " Case "8"c sum += 0.8 combinaison &= " 0.8 " Case "9"c sum += 0.9 combinaison &= " 0.9 " End Select If count 7 AndAlso sum 0 Then list1.Add(combinaison) End If End If Next Next list1 = list1.Distinct.ToList Return list1 End Function
Je code que sur VBA
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDim I As Integer Dim Valeur Randomize For I = 1 To 10 Valeur = Valeur & Int((10 * Rnd) - 1) / 10 & vbCrLf Next MsgBox Valeur
Dim listnumber(17) As Double Dim tableresult() As String Sub combinaison() Dim iter As Long Dim num As Long Dim sum As Double Dim index, count, countone As Integer Dim res As String initlist count = 0 For iter = 127 To 260096 num = iter index = 0 sum = 0 countone = 0 While num > 0 'convertir en binaire If num Mod 2 = 1 Then countone = countone + 1 sum = sum + listnumber(index) res = res & " " & listnumber(index) & " " End If num = Int(num / 2) index = index + 1 Wend If sum 0 And countone 7 Then ReDim Preserve tableresult(count) tableresult(count) = res count = count + 1 End If res = "" Next iter End Sub Sub initlist() Dim iter As Integer Dim value As Double value = -0.9 For iter = 0 To 8 listnumber(iter) = value value = value + 0.1 Next iter value = 0.1 For iter = 9 To 17 listnumber(iter) = value value = value + 0.1 Next iter End Sub Private Sub Form_Load() combinaison End Sub
Je souhaite generer les combinaisons de 7 Variable (entre -1 et 1 ) a seulement 0.1 pres ( genre 0.9 , 0.5 ...mais pas 0.44) tel que la somme des 7 Variable soit egale a 0
par contre il ne sort pas toutes les combo possibles!
Ex -0.3 0.2 0.1 -0.1 0.1 -0.1 0.1
Je souhaite generer les combinaisons avec remise de 7 Variables (entre -1 et 1 ) a seulement 0.1 pres ( genre 0.9 , 0.5 ...mais pas 0.44) tel que la somme des 7 Variable soit egale a 0
répétition possibles de 7 nombres parmi 21
le nombre de combinaisons avec répétitions de 7 éléments parmi 21 est = au nombre de combinaisons de 7 objets parmi 21+7-1 (= 27) sans répétitions .
entre 1 et -1ne spécifie pas s'ils sont inclus ou non...