Petite classe random...

Description

Pas compliqué...cette classe utilise la fonction Rnd pour faire certaines choses dont j'avais besoin, par exemple créer un nombre aléatoire rapidement avec un min, max et un intervalle ; aussi, à l'aide d'un tableau comme argument, je pouvais décider du nombre d'occurence de chacun de ces éléments....enfin, voyez les fonctions , c'est plus clair:

(création de l'objet et méthode de "construction") :

Dim objRandom as new Random

Call objRandom.setPattern(min,max,intervalle)
Call objRandom.setList(tableau, nbre de répétition)

(On peut avoir un nouveau nombre aléa en appelant) :

ObjRandom.GetRandomInteger (avec setPattern)
ObjRandom.GetRandomFromList (avec setList)....

y'a un exemple dans le zip...

si ça peut aider qqn..

Source / Exemple :


Option Explicit

Dim vMin As Integer
Dim vMax As Integer
Dim vInterval As Integer
Dim vRepetition As Integer
Dim vList As Variant
Dim vCounterList() As Integer

Private Sub Class_Initialize()
Randomize
End Sub

Public Function GetRandomInteger() As Integer
  Dim X As Integer
    
     X = (Rnd * Int((vMax - vMin) / vInterval))
     GetRandomInteger = X * vInterval + vMin
              
End Function

Public Function GetRandomFromList() As Variant
  Dim vTemp() As Integer
  Dim X As Integer
  Dim i As Integer
  Dim n As Integer
  
    For i = 1 To UBound(vList)
      If vCounterList(i) < vRepetition Or vRepetition = 0 Then
        n = n + 1
        ReDim Preserve vTemp(1 To n)
        vTemp(n) = i
      End If
    Next i
    
    If n = 0 Then
      GetRandomFromList = -1
      Exit Function
    End If
    
  X = (Rnd * (n - 1)) + 1
  vCounterList(vTemp(X)) = vCounterList(vTemp(X)) + 1
  GetRandomFromList = vList(vTemp(X))
  
End Function

Public Sub SetPattern(Min As Integer, Max As Integer, Interval As Integer)
  vMin = Min
  vMax = Max
  vInterval = Interval
End Sub

Public Sub SetList(List As Variant, Optional Repetition As Integer)
  Dim i As Integer
  ReDim vCounterList(1 To UBound(List) + 1)
  
  vList = List
  
  For i = 1 To UBound(List) + 1
    vCounterList(i) = 0
  Next i
  
  vRepetition = Repetition

End Sub

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.