Option Explicit On Public Class Form1 Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load ' 10% de chiffres 1 ' 30% de chiffres 0 ' 40% de chiffres 2 ' 20% de chiffres 3 Dim hasard As Integer = 0 Dim i0 As Byte = 0 Dim i1 As Byte = 0 Dim i2 As Byte = 0 Dim i3 As Byte = 0 Dim range As String = "" Do While Len(range) <> 100 Randomize() hasard = Int((4 - 1 + 1) * Rnd() + 1) - 1 ' car je ne sais pas si on peut tirer 0 avec ça Select Case hasard Case 0 If i0 > 30 Then GoTo suite i0 = i0 + 1 Case 1 If i1 > 10 Then GoTo suite i1 = i1 + 1 Case 2 If i2 > 40 Then GoTo suite i2 = i2 + 1 Case 3 If i3 > 20 Then GoTo suite i3 = i3 + 1 End Select range = range & hasard suite: Loop MsgBox(range) End End Sub End Class
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPar exemple, pouvoir remplir une feuille avec 10% de chiffres 1, 30% de chiffres 0, 40% de chiffres 2 et 20% de chiffres 3.
moi je vous renverrai vers l'excellent prog de nix "générer un mot de passe sécurisé" qui répond parfaitement à cette problématique.
Monsieur ucfoutu, essayez de moins polémiquer cette façon de faire peut nuire à cet excellent site
avec 10% de chiffres 1, 30% de chiffres 0, 40% de chiffres 2 et 20% de chiffres 3
Dim tablo(100) For i = 1 To 100 Select Case i Case Is <9: a 1 Case Is <19: a 3 Case Is <29: a 0 Case Else: a = 2 End Select Next
nb = UBound(tablo) For i = 0 To nb \ 2 ou = Int(((nb - i) * Rnd)) temp = tablo(ou) tablo(ou) = tablo(nb - i) tablo(nb - i) = temp Next
moi je vous renverrai vers l'excellent prog de nix "générer un mot de passe sécurisé" qui répond parfaitement à cette problématique.
Bonjour Joe,
il te manque une donnée essentielle, c'est qu' ucfoutu détient la science infuse. Je comprends très bien ta démarche
Dim UnTab(0 To 50) Dim UnTab(-10 To 50) Dim UnTab(10 To 50) Dim UnTab(1 To 50) Dim UnTab(-100 To -50)
Dim h, p As Integer, i(3) As Byte, t(99) As Integer t(99) = 4 Do While t(99) > 3 Randomize() h = Int((4 - 1 + 1) * Rnd() + 1) - 1 If h 0 And i(h) 30 Then h = 4 If h 1 And i(1) 10 Then h = 4 If h 2 And i(2) 40 Then h = 4 If h 3 And i(3) 20 Then h = 4 If h < 4 Then i(h) = i(h) + 1 t(p) = h p = p + 1 End If Loop
Dim t(1 To 100) as integer
Par exemple, pouvoir remplir une feuille avec 10% de chiffres 1, 30% de chiffres 0, 40% de chiffres 2 et 20% de chiffres 3.
Private Sub CommandButton1_Click() Cells.Clear ReDim tablo(0, 0) As Long Dim a As Double, x As Long, i As Long, nb As Long x = 10000 ReDim tablo(1 To x, 1 To 1) As Long a = 1 For i = 1 To x Select Case i Case Is 1001: a 3 Case Is 3001: a 0 Case Is 6001: a 2 End Select tablo(i, 1) = a Next If MsgBox("voulez-vous les mélanger ?", vbYesNo) = vbYes Then nb = UBound(tablo) For i = 1 To nb - 1 ou = Int(((nb - i + 1) * Rnd) + 1) temp = tablo(ou, 1) tablo(ou, 1) = tablo(nb - i, 1) tablo(nb - i, 1) = temp Next End If Range("A1:A" & x).Value = tablo '--------------tout ce qui suit n'est là que pour que tu constates le résultat et n"'a rien à voir avec le code For i = 1 To 7 Columns(i).ColumnWidth = 20 Next Range("C3:G3").Interior.Color = RGB(255, 200, 200) Range("C1:G1").Interior.Color = RGB(0, 250, 200) Range("C2:G2").Font.Color = RGB(255, 0, 0) Range("B1").Value = "Voulu" Range("B2").Value = "nombres générés" Range("B3").Value = "Pourcentages" Range("C1").Value = "pour les 1 (10%)" Range("D1").Value = "pour les 2 (40%)" Range("E1").Value = "pour les 3 (20%)" Range("F1").Value = "pour les 0 (30%)" Range("G1").Value = "total" Range("C2").Formula = "=COUNTIF(A:A,1)" Range("D2").Formula = "=COUNTIF(A:A,2)" Range("E2").Formula = "=COUNTIF(A:A,3)" Range("F2").Formula = "=COUNTIF(A:A,0)" Range("G2").Formula = "=SUM(C2:F2)" Range("C3").Formula = "=(C2/G2)*100 & "" %""" Range("D3").Formula = "=(D2/G2)*100 & "" %""" Range("E3").Formula = "=(E2/G2)*100 & "" %""" Range("F3").Formula = "=(F2/G2)*100 & "" %""" End Sub