Python:
Génération de nombres aléatoires
Comment faire :
Python fournit le module random qui aide à générer des nombres aléatoires pour divers usages. Voici comment commencer :
Importer le module
import randomGénérer un entier aléatoire Entre n’importe quels deux nombres.
random_integer = random.randint(1, 10) print(random_integer)Exemple de sortie :
7Générer un nombre à virgule Entre 0 et 1.
random_float = random.random() print(random_float)Exemple de sortie :
0.436432634653Si vous avez besoin d’un flottant dans une plage différente, multipliez :
random_float_range = random.random() * 5 # de 0 à 5 print(random_float_range)Exemple de sortie :
3.182093745Choisir un élément aléatoire d’une liste
greetings = ['Hello', 'Hi', 'Hey', 'Hola', 'Bonjour'] print(random.choice(greetings))Exemple de sortie :
HolaMélanger une liste Parfait pour les jeux de cartes ou toute application ayant besoin de randomiser l’ordre.
numbers = list(range(10)) random.shuffle(numbers) print(numbers)Exemple de sortie :
[2, 5, 0, 4, 9, 8, 1, 7, 6, 3]
Exploration en profondeur
Le module random de Python utilise un générateur de nombres pseudo-aléatoires (PRNG), spécifiquement l’algorithme Mersenne Twister, qui est bon pour les applications à usage général mais pas adapté à des fins cryptographiques en raison de sa prévisibilité si suffisamment de sorties sont observées. Le module secrets, introduit dans Python 3.6, offre une meilleure alternative pour générer des nombres aléatoires cryptographiquement forts, particulièrement utile dans les applications sensibles à la sécurité. Par exemple, générer un jeton aléatoire sécurisé pour un lien de réinitialisation de mot de passe :
import secrets
token = secrets.token_hex(16)
print(token)Historiquement, générer des nombres aléatoires qui sont véritablement aléatoires a été un défi en informatique, avec des méthodes précoces reposant sur des phénomènes physiques ou des graines entrées manuellement. Le développement et l’adoption d’algorithmes comme Mersenne Twister (utilisé par défaut dans le module random de Python jusqu’à au moins ma dernière mise à jour des connaissances en 2023) ont marqué des progrès significatifs. Toutefois, la recherche continue de algorithmes plus sécurisés et efficaces a mené à l’inclusion du module secrets pour les tâches liées à la cryptographie. Cette évolution reflète l’importance croissante de la sécurité dans le développement logiciel et le besoin de plus robustesse en matière d’aléatoire dans des applications allant du chiffrement à la génération de jetons sécurisés.