RND |
Aléatoire |
|---|---|
| Access 2019, Access 2016, Access 2013, Access 2010, Access 2007, Access 2003, Access XP, Access 2000 | Microsoft Access |
Syntaxe
| Rnd |
Description
Cette fonction retourne un nombre aléatoire.
Remarques
- La fonction génère un nombre pseudo-aléatoire : La fonction Rnd retourne une valeur pseudo-aléatoire comprise entre 0 (inclus) et 1 (exclu). Le nombre produit est généralement de type Single et peut être utilisé dans des calculs ou des simulations. Cette fonction est très employée pour produire des données de test ou introduire une part d'aléatoire dans une application.
- Les valeurs retournées sont comprises entre 0 et 1 : Le résultat de Rnd est toujours un nombre réel supérieur ou égal à 0 et strictement inférieur à 1. Pour obtenir une valeur dans un autre intervalle, il suffit d'effectuer une transformation mathématique. Par exemple, Int(Rnd() * 100) + 1 génère un entier compris entre 1 et 100.
- Les nombres sont pseudo-aléatoires et non réellement aléatoires : Rnd utilise un algorithme déterministe produisant une suite de nombres qui paraît aléatoire. À partir d'une même graine (seed), cette suite est toujours identique. Cette propriété est utile pour reproduire exactement une simulation ou un scénario de test.
- Elle est souvent utilisée avec la fonction Randomize : Pour obtenir une séquence différente à chaque exécution du programme, il est recommandé d'appeler Randomize avant la première utilisation de Rnd. Randomize initialise le générateur pseudo-aléatoire en utilisant généralement l'horloge du système. Sans cette initialisation, la même suite de nombres peut être produite à chaque lancement.
- Elle est utile pour les simulations et les jeux : La fonction Rnd est fréquemment employée pour simuler des événements aléatoires, lancer des dés, tirer des cartes ou sélectionner un élément au hasard. Elle intervient également dans les applications de statistiques, les démonstrations pédagogiques et les générateurs de données fictives. Sa simplicité d'utilisation en fait une fonction très populaire.
- Elle peut être combinée avec d'autres fonctions mathématiques : Rnd est souvent associée à Int, Round, Abs ou encore Choose afin de produire des valeurs adaptées à un besoin particulier. Par exemple, il est possible de choisir aléatoirement un élément dans une liste ou de générer une date aléatoire dans une plage donnée. Cette flexibilité permet de créer rapidement des scénarios variés.
- Elle est disponible dans les requêtes et dans le code VBA : La fonction Rnd peut être utilisée dans les modules VBA ainsi que dans certaines expressions Access et requêtes. Elle permet de générer directement des valeurs aléatoires sans recourir à une bibliothèque externe. Son comportement reste cohérent dans les différents contextes d'utilisation.
- Elle ne doit pas être utilisée pour la sécurité ou la cryptographie : Le générateur pseudo-aléatoire de Rnd est conçu pour des besoins généraux de programmation et non pour des usages cryptographiques. Les valeurs produites peuvent être prédites si l'on connaît l'état du générateur ou la graine utilisée. Pour les applications nécessitant une sécurité élevée, il est préférable d'utiliser un générateur de nombres aléatoires cryptographiquement sécurisé.
- Une transformation est souvent nécessaire pour obtenir un entier : Dans la plupart des applications, le résultat de Rnd est multiplié par une plage de valeurs puis converti en entier avec Int. Par exemple, Int(Rnd() * 6) + 1 permet de simuler le lancer d'un dé à six faces. Cette technique est devenue un standard dans le développement VBA.
- La fonction est compatible avec toutes les versions modernes de Microsoft Access : La fonction Rnd est disponible depuis les premières versions de Microsoft Access intégrant VBA et son comportement est demeuré stable au fil des années. Elle est compatible avec Access 2000, Access XP, Access 2003, Access 2007, Access 2010, Access 2013, Access 2016 ainsi qu'avec Microsoft 365. Cette stabilité garantit que les applications utilisant cette fonction continueront de produire des résultats cohérents lors des migrations vers des versions plus récentes d'Access.
Exemple
Voici un exemple de comment utiliser la fonction Rnd dans Microsoft Access :
Int ((6 - 1 + 1) * Rnd + 1)
Résultat: nombre aléatoire entre 1 et 6
Int ((200 - 150 + 1) * Rnd + 150)
Résultat: nombre aléatoire entre 150 et 200
Int ((999 - 100 + 1) * Rnd + 100)
Résultat: nombre aléatoire entre 100 et 999
Exemple de code VBA
La fonction Rnd peut être utilisée dans le code VBA de Microsoft Access.
Par exemple :
Dim LRandomNumber As Integer
LRandomNumber = Int ((300 - 200 + 1) * Rnd + 200)
Dans cet exemple, la variable appelée LRandomNumber contiendrait désormais un nombre aléatoire compris entre 200 et 300.
Ajoutez la fonction Randomize
Si vous constatez que la fonction Rnd ne génère pas un nombre véritablement aléatoire, vous pouvez utiliser la fonction Randomize pour modifier la valeur initiale du générateur de nombres aléatoires de la fonction Rnd. L'appel à la fonction Randomize doit précéder l'appel à la fonction Rnd.
Par exemple :
'Exemple fourni par gladir.com
Dim LRandomNumber As Integer
Randomize
LRandomNumber = Int ((300 - 200 + 1) * Rnd + 200)
Dans cet exemple, la variable LRandomNumber contiendrait désormais un nombre aléatoire compris entre 200 et 300. La fonction Randomize garantit que le nombre généré est véritablement aléatoire en initialisant le générateur de nombres aléatoires avec une valeur d'initialisation équivalente à l'horloge système.
Attention : si vous n'appelez pas la fonction Randomize avant la fonction Rnd, cette dernière risque de renvoyer la même valeur aléatoire à chaque exécution. Par conséquent, le nombre obtenu ne sera pas nécessairement aléatoire.