RANDOMIZE |
Aléatoire |
|---|---|
| Visual Basic | |
Syntaxe
| Randomize [valeur] |
Paramètres
| Nom | Description |
|---|---|
| valeur | Ce paramètre permet d'indiquer la "graine" (seed) utilisée pour initialiser le générateur de nombres aléatoires. Fonctionnement : Si une valeur numérique est fournie, le générateur de nombres aléatoires commencera toujours avec cette même graine, ce qui produit des séquences de nombres prévisibles et reproductibles. Cela peut être utile pour tester un programme de manière cohérente. Cas sans paramètre : Si aucun paramètre n'est donné (simplement Randomize), Visual Basic utilise l'horloge système pour choisir une graine différente à chaque exécution, rendant ainsi les résultats réellement aléatoires. |
Description
Cette instruction permet de réinitialiser les nombres aléatoires.
Remarques
- L'instruction Randomize permet de réinitialiser le générateur de nombres aléatoires. Cela est crucial pour éviter que chaque exécution du programme produise la même séquence de nombres, surtout si Rnd est utilisé sans appel préalable à Randomize.
- Lorsque Randomize est appelé sans paramètre, Visual Basic utilise automatiquement l'horloge système comme source pour la graine. Cela garantit une meilleure diversité dans les suites de nombres aléatoires entre différentes exécutions du programme.
- L'utilisation d'un paramètre numérique avec Randomize permet de contrôler la suite aléatoire générée. En passant toujours la même valeur, on obtient exactement la même suite de nombres aléatoires à chaque lancement du programme, ce qui est utile pour les tests ou le débogage.
- Randomize est souvent placé au début d'un programme ou d'une sous-routine lorsqu'on souhaite utiliser la fonction Rnd. Cela assure que la génération de nombres pseudo-aléatoires ne reste pas figée sur une séquence répétitive.
- Si Randomize est omis, l'appel à Rnd produit toujours la même séquence de nombres à chaque exécution, ce qui peut être source d'erreurs subtiles dans les programmes nécessitant une véritable variabilité.
- Lorsqu'un programme Visual Basic utilise des événements aléatoires importants (par exemple pour des jeux, des simulations ou des animations aléatoires), appeler Randomize avec l'horloge système améliore l'expérience en garantissant des résultats non prévisibles.
- Il est important de noter que la fonction Rnd seule ne suffit pas pour obtenir de la véritable variabilité : Rnd génère une séquence à partir de l'état courant du générateur de nombres. Seul Randomize change cet état initial en fonction d'une source dynamique.
- L'instruction Randomize n'a aucun effet sur les autres parties du programme si elle est appelée après l'utilisation de Rnd. Elle doit donc être utilisée avant la génération des nombres pour influencer correctement toute la suite pseudo-aléatoire.
Sécurité
- L'instruction n'est pas conçu pour la sécurité : Randomize + Rnd utilise un algorithme très simple et rapide pour générer des nombres pseudo-aléatoires. Il n'est pas du tout prévu pour des usages sécurisés comme le chiffrement, la génération de mots de passe, ou toute application où l'imprévisibilité est critique.
- Prévisibilité facile : Puisque Randomize utilise soit une valeur fixe, soit l'horloge système, un attaquant connaissant approximativement l'heure d'exécution (à la seconde près) peut prédire facilement la suite de nombres générés par Rnd. Cela rend toute sécurité basée sur Rnd extrêmement faible.
- Absence de bonne entropie : Dans Visual Basic classique, la source de "randomness" est uniquement basée sur l'horloge, ce qui est très limité. Dans des environnements modernes, on exige des sources beaucoup plus chaotiques (bruits matériels, mouvements de souris, entrées réseau) pour vraiment sécuriser un générateur aléatoire.
- Séquences répétitives : Si Randomize est oublié ou mal utilisé, deux utilisateurs différents peuvent obtenir la même suite de nombres sans s'en rendre compte, ce qui est désastreux pour des applications où l'unicité est nécessaire (par exemple dans la génération d'identifiants uniques).
- Attaques sur des systèmes prévisibles : Dans des scénarios comme les jeux multijoueurs, si Rnd est utilisé pour des événements critiques (position des objets, loot,...) et basé sur un Randomize prévisible, un joueur malveillant peut prédire l'apparition de certains éléments et tricher.
Exemple
Voici un exemple d'une utilisation typique de cette fonction :
on obtiendra le résultat suivant :
Aleatoire reel (0 a 1) = 0,7055475Aleatoire reel (0 a 9) = 5,33424
Aleatoire reel (0 a 1) = 1,985675E-02
Aleatoire reel (0 a 9) = 3,747981
Dernière mise à jour : Lundi, le 19 novembre 2012