Créer une liste de nombre aléatoire depuis un intervalle avec Python

Posted on Sam 11 novembre 2023 in Informatique

Contexte et définition du problème

C'est la fin de la semaine. Il ne me reste que plus quelques heures avant de retourner à la maison pour le week-end. Je prends donc sur mon temps de pause pour coder un petit peu. PLus exactement je fais une série d'exercices issus d'un cours en ligne. Ce cours consiste en une série de 100 exercices. Je prends un certain plaisir à effectuer ce cours et je le refais pour la deuxième fois pour consolider mes acquis et ainsi également par plaisir.

Il est composé de plusieurs parties et chaque partie contient plus d'une dizaine d'exercices. Pour varier un peu cette nouvelle étude, comme j'aime bien faire dans des situations similaires, je fais les exercices dans un ordre aléatoire. Dans ce cas précis, je vais aborder une nouvelle partie : la section 3 qui comporte les exercices 51 à 75.

Mon objectif est donc de générer une liste aléatoire de nombres entiers compris entre 51 et 75 avec l'aide de python.

Ma solution

Il est très agréable de parvenir à une solution sans avoir recours à Google©. Et j'ai été agréablement surpris de parvenir à résoudre ce petit problème sans avoir recours à cette béquille diabolique.

La première étape est ce qu'on pourrait appeler le brouillon. Je tâtonne le problème dans la console Python©. On peut également appeler ça le bac à sable. Dans le logiciel que j'utilise pour coder (PyCharm), il y a un onglet quelque part en bas pour accéder à cette console avec l'entrée qui commence par >>>.

Je cherche donc une fonction que gère des listes aléatoires. Je me rappelle que les fonctions de bases ne le permettent pas et qu'il faut passer par une bibliothèque. Cette bibliothèque me revient à l'esprit facilement, car elle s'appelle random, qui veut dire aléatoire comme vous savez sûrement déjà. Je dois donc importer cette librairie :

import random

J'utilise ensuite la fonction intégrée (built-in function) dir qui permet de lister toutes les méthodes de la classe random. Je parcours les différentes méthodes et mon choix se pose sur sample. Ensuite j'écris directement la ligne de commande et mon éditeur de code me montre les paramètres attendus, mais il est possible d'avoir la définition de la méthode avec cette commande : help(random.sampl)

En bidouillant avec les fonctions intégrées range() et list(), j'arrive à ce code fonctionnel pour mon problème.

import random

my_list = list(range(51, 76))
my_list_randomized = random.sample(my_list, len(my_list))

print(my_list_randomized)

Et la built-in fonction len() permet de connaitre la longueur de notre liste, car la méthode random.sample() a besoin d'un deuxième paramètre obligatoire pour savoir la taille de la liste extraite. Dans notre cas, la taille de l'échantillon aléatoire est égale à la taille de notre liste initiale.

Conclusion

Petit exercice très rapide et pas très compliqué pour moi. Je dois vous avouer que j'avais déjà fait cet exercice il y a quelques années avec une recherche sur Google@. Je pense que cette recherche était superflue et qu'il est possible de trouver la solution soi-même avec la satisfaction de trouver seul en bonus. J'imagine qu'il y a sûrement des solutions autres et probablement plus efficaces ou élégantes, néanmoins celle-ci me satisfait amplement.