Pubblicato il 20 Maggio 2020 da Maurizio Matetich

In alcune occasioni è necessario generare e gestire dei numeri casuali. In Microsoft Access esiste la funzione RND adatta a questo scopo.

Vediamo come funziona e come si può utilizzare in un caso reale.

Cos’è la funzione Rnd

La funzione Rnd (abbreviazione del termine random ovvero casuale) permette di generare un numero casuale compreso tra un valore minimo e un valore massimo.

In pratica, se ho un valore massimo ed un valore minimo, per ottenere un numero casuale compreso tra massimo e minimo scriverò:

ValoreCasuale = Int((ValoreMassimo – ValoreMinimo + 1) * Rnd + ValoreMinimo

ricordo che Int è la funzione che permette di ottenere un numero intero.

Quindi per ottenere un numero casuale compreso tra 1 e 10 scriverò:

ValoreCasuale = Int((10 – 1 + 1) * Rnd + 1

e quindi

ValoreCasuale = Int((10 ) * Rnd + 1

Un esempio concreto di utilizzo della funzione Rnd

In una tabella di nome Limiti ho due campi che si chiamano LimiteMinimo e LimiteMassimo e sono di tipo Integer.

La tabella Limiti mi permette di gestire più facilmente una eventuale necessità di modifica dei valori. Infatti utilizzando una tabella, anche un utente con poca esperienza può accedere al record e modificare i valori dei campi. Altrimenti si dovrebbe intervenire sul codice VBA con il rischio di errori.

Poi abbiamo la tabella Risultato con 3 campi per memorizzare 3 valori casuali. I campi si chiamano Valore1, Valore2, Valore3.

Dobbiamo generare 3 numeri casuali compresi tra LimiteMinimo e LimiteMassimo. Poi dobbiamo salvare questi numeri nei campi della tabella Risultato.

Vediamo il codice VBA utilizzabile in Access.

Dim rs1, rs2 As DAO.Recordset

Dim Differenza as integer

Set rs1 = CurrentDb.OpenRecordset(“Limiti”, dbOpenTable)
rs1.MoveFirst

Set rs2 = CurrentDb.OpenRecordset(“Risultato”, dbOpenTable)
rs2.MoveLast

‘aggiungo un nuovo record nella tabella Risultato

rs2.AddNew

‘preparo la funzione Rnd e genero il valore

Randomize
Differenza = rs1.Fields(“LimiteMassimo”) – rs1.Fields(“LimiteMinimo”) + 1
rs2.Fields(“Valore1”) = Int((Differenza * Rnd) + rs2.Fields(“LimiteMinimo”))

Randomize
rs2.Fields(“Valore2”) = Int((Differenza * Rnd) + rs2.Fields(“LimiteMinimo”))

Randomize
rs2.Fields(“Valore3”) = Int((Differenza * Rnd) + rs2.Fields(“LimiteMinimo”))

rs2.Update

MsgBox “Valori casuali generati correttamente”

rs1.Close
Set rs1 = Nothing

rs2.Close
Set rs2 = Nothing

Conclusioni

La funzione Rnd ha moltissime applicazioni.

Ad esempio, abbiamo creato un programma con Access e  per fare dei test abbiamo bisogno di numeri generati casualmente per simulare l’inserimento dati da parte di un operatore.

Oppure dobbiamo fare delle analisi statistiche e ci servono dei mumeri casuali.

Le possibilità sono molte. Fatemi sapere nei commenti in che modo avete usato la funzione Rnd.

Hai bisogno di una grande quantità di dati per gestire delle simulazioni? prova Mockaroo