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.MoveFirstSet 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 = Nothingrs2.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
Scrivi un commento