Comment obtenir un nombre aléatoire en Kotlin : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

L'aléatoire n'est pas le chaos : comment Kotlin résout le problème de Stack Overflow

\n\n

Chaque développeur a écrit au moins une fois dans sa vie du code pour générer un nombre aléatoire. Rien de plus simple, semble-t-il ? Mais quand cette question est posée sur Stack Overflow (et la question "How can I get a random number in Kotlin?" recueille des milliers de vues), il devient clair qu'il y a plus d'embûches qu'il n'y paraît. Surtout si vous venez de Java ou Python.

\n\n

Dans cet article, nous allons explorer la génération de nombres aléatoires en Kotlin, des techniques simples aux plus avancées. Vous apprendrez à obtenir un entier aléatoire, un nombre décimal, à définir une plage et même à générer un random cryptographique pour la sécurité. C'est parti !

\n\n

Les bases : Random en Kotlin

\n\n

Kotlin n'a pas sa propre classe dédiée au random — il utilise le puissant java.util.Random de Java, mais avec une syntaxe bien plus pratique. Grâce aux fonctions d'extension, écrire du code Kotlin random peut se faire en une seule ligne.

\n\n

La méthode la plus simple : Random.nextInt()

\n\n

Si vous avez besoin simplement d'un nombre entier aléatoire (de 0 à la valeur maximale de Int), utilisez :

\n\n
import kotlin.random.Random\n\nfun main() {\n    val randomNumber = Random.nextInt()\n    println("Nombre aléatoire : $randomNumber")\n}
\n\n

Chaque exécution donnera une nouvelle valeur. Mais le plus souvent, nous avons besoin de limiter la plage. Pour cela, il existe une version surchargée :

\n\n
val fromZeroToTen = Random.nextInt(10)   // 0..9\nval fromFiveToFifteen = Random.nextInt(5, 15) // 5..14
\n\n
Important : En Kotlin, comme en Java, la limite supérieure n'est pas incluse. Random.nextInt(10) retournera un nombre de 0 à 9.
\n\n

Nombres décimaux : Random.nextDouble() et Random.nextFloat()

\n\n

Pour générer un float aléatoire en Kotlin ou un double, utilisez :

\n\n
val randomDouble = Random.nextDouble()   // 0.0..1.0\nval randomFloat = Random.nextFloat()     // 0.0..1.0\n\n// Avec une plage :\nval doubleInRange = Random.nextDouble(10.0, 20.0) // 10.0..20.0
\n\n

Notez que nextFloat() ne prend pas en charge les plages — seulement nextDouble(). Si vous avez besoin d'un float dans une plage, convertissez :

\n\n
val customFloat = Random.nextDouble(1.5, 5.5).toFloat()
\n\n

Génération de nombres aléatoires dans une plage : exemples pratiques

\n\n

Le plus souvent, dans les projets réels, vous aurez besoin d'un nombre aléatoire dans une plage donnée en Kotlin. Examinons les scénarios les plus courants.

\n\n

Entier aléatoire de 1 à 100 (inclus)

\n\n

Pour inclure la limite supérieure, ajoutez simplement 1 :

\n\n
val diceRoll = Random.nextInt(1, 7)  // 1..6 (comme un dé)\nval lottery = Random.nextInt(1, 101) // 1..100
\n\n

Index aléatoire d'un tableau ou d'une liste

\n\n

L'une des tâches les plus courantes est d'obtenir un élément aléatoire d'une collection :

\n\n
val colors = listOf("Rouge", "Bleu", "Vert", "Jaune")\nval randomColor = colors[Random.nextInt(colors.size)]\nprintln("Couleur aléatoire : $randomColor")
\n\n

Mais Kotlin propose une manière encore plus élégante — la fonction random() :

\n\n
val randomColor = colors.random()\nprintln("Couleur aléatoire : $randomColor")
\n\n

Sous le capot, elle fait la même chose, mais le code est plus propre.

\n\n

Nombre aléatoire avec un pas

\n\n

Parfois, vous devez générer des nombres multiples d'une certaine valeur. Par exemple, des nombres pairs de 0 à 100 :

\n\n
fun randomEven(max: Int): Int {\n    val half = max / 2\n    return Random.nextInt(0, half + 1) * 2\n}\n\nprintln(randomEven(100)) // 0, 2, 4, ..., 100
\n\n

Techniques avancées : séquences et cryptographie

\n\n

Séquence aléatoire de nombres

\n\n

Si vous devez générer une liste de nombres aléatoires, utilisez generate

Blogs

Book Recommendations