Toolbox Visual Basic

Mauro VB Homepage - Toolbox Presentiamo in questa sezione, per i programmatori in Visual Basic, versioni 5 o 6, strumenti idonei ad ottimizzare le loro applicazioni in termini di efficacia e funzionalità: si tratta di esempi di codici e di routines accompagnati da indicazioni sul loro funzionamento e sul loro utilizzo all'interno di un programma.

Torna a Toolbox

Il materiale messo a disposizione è totalmente gratuito e di libero utilizzo. Se questo codice viene redistribuito altrove si dovrà però citarne l'autore e la fonte.

Espandi tutto | Chiudi tutto

Sezione Numeri e date

Funzione ArrayRandomRange

A cosa serve e come funziona questo codice
Questo codice serve per generare una matrice (array) di numeri interi casuali compresi in un determinato intervallo (range).
La funzione, che deve essere richiamata passando obbligatoriamente come argomenti NumMin e NumMax rispettivamente il valore minimo e il valore massimo dell'intervallo numerico desiderato, restituisce una matrice numerica (Variant o Long) che contiene, in ordine casuale, tutti i numeri compresi nell'intervallo specificato dagli argomenti NumMin e NumMax.

Quando e perchè usare questo codice
Questa funzione può essere usata quando c'è la necessità di dover utilizzare una sequenza numerica casuale compresa tra un determinato intervallo (esempio: estrazione dei numeri nel gioco della tombola, assegnazione di domande scelte casualmente da una lista ecc.).

Avvertenze e suggerimenti
Per migliorare l'efficienza del codice, in ambiente VB6 è possibile (e raccomandabile) modificare la Funzione da "Variant" a "Long".
Vedi anche la funzione RandomRange.
Function ArrayRandomRange(ByVal Min As Long, ByVal Max As Long) As Variant'As Long()

  Dim i As Long, j As Long, tmp As Long

  'ridimensiona la matrice
  ReDim RndNum(Min To Max) As Long

  'carica la sequenza numerica nella matrice
  For i = Min To Max
    RndNum(i) = i
  Next

  For i = Max To Min Step -1
    ' genera un numero casuale compreso nel range specificato
    j = Int(Rnd * (Max - Min + 1)) + Min
    'inverte e combina in modo casuale i valori numerici all'interno della matrice
    tmp = RndNum(i): RndNum(i) = RndNum(j): RndNum(j) = tmp
  Next

  'assegna la sequenza numerica alla funzione(matrice)
  ArrayRandomRange = RndNum

End Function
Esempio di utilizzo
Nell'esempio che segue ipotizziamo di avere la necessità di generare una sequenza numerica casuale compresa in un intervallo da 1 a 10, e di volerla visualizzare in un controllo ListBox.
Ecco come richiamare la funzione ArrayRandomRange:
Private Sub VisualizzaSequenzaCasuale()
  Dim i As Long
  ReDim MatriceNumeriCasuali(1 To 10) As Long

  MatriceNumeriCasuali = ArrayRandomRange(1, 10)

  List1.Clear
  For i = LBound(MatriceNumeriCasuali) To UBound(MatriceNumeriCasuali)
    List1.AddItem MatriceNumeriCasuali(i)
  Next

  Erase MatriceNumeriCasuali

End Sub

Funzione RandomRange

A cosa serve e come funziona questo codice
Questo codice serve per estrarre un numero intero casuale compreso in un determinato intervallo (range). La funzione, che deve essere richiamata passando obbligatoriamente come argomenti NumMin e NumMax rispettivamente il valore minimo e il valore massimo del numero che si vuole ottenere, restituisce un valore numerico (long) casuale compreso nell'intervallo specificato dagli argomenti NumMin e NumMax.

Quando e perchè usare questo codice
Questa funzione può essere usata quando c'è la necessità di utilizzare un numero casuale compreso in un determinato intervallo.

Avvertenze e suggerimenti
Vedi anche la funzione ArrayRandomRange
Private Function RandomRange(ByVal NumMin As Long, ByVal NumMax As Long) As Long

  'Inizializza il generatore di numeri casuali.
  Randomize

  'genera il numero casuale
  RandomRange = Int((NumMax - NumMin + 1) * Rnd + NumMin)

End Function
Esempio di utilizzo
Nell'esempio che segue ipotizziamo di avere la necessità di generare un numero casuale compreso tra 1 e 10.
Ecco come richiamare la funzione RandomRange:
Dim NumeroCasuale as Long
NumeroCasuale = RandomRange(1, 10) 'estrae un numero casuale compreso tra 1 e 10