Generering av tilfeldige tall

Kotlin:
Generering av tilfeldige tall

Hvordan:

Kotlin gir en enkel måte å generere tilfeldige tall gjennom sitt standardbibliotek. Slik kan du generere forskjellige typer tilfeldige verdier:

Generere et tilfeldig heltall

For å generere et tilfeldig heltall innenfor et spesifikt område:

import kotlin.random.Random

fun main() {
    val randomNumber = Random.nextInt(1, 100) // Genererer et tilfeldig tall mellom 1 og 99
    println(randomNumber)
}

Generere et tilfeldig desimaltall

På samme måte, for å generere et tilfeldig desimaltall:

import kotlin.random.Random

fun main() {
    val randomDouble = Random.nextDouble(1.0, 10.0) // Genererer et tilfeldig desimaltall mellom 1.0 og 10.0
    println(randomDouble)
}

Generere en tilfeldig boolsk verdi

For å generere en tilfeldig boolsk verdi:

import kotlin.random.Random

fun main() {
    val randomBoolean = Random.nextBoolean() // Genererer enten sant eller usant tilfeldig
    println(randomBoolean)
}

Seed for reproduserbare resultater

I tilfeller hvor du trenger reproduserbare sekvenser av tilfeldige tall (for eksempel under testing), kan du seede generatoren av tilfeldige tall:

import kotlin.random.Random

fun main() {
    val seed = 12345L
    val random = Random(seed)
    val randomNumber = random.nextInt(1, 100)
    println(randomNumber)
}

Dypdykk

Kotlin standardbiblioteks tilnærming til å generere tilfeldige tall benytter seg av Java sin java.util.Random under panseret, noe som sikrer en blanding av brukervennlighet og ytelse. Det er imidlertid viktig å merke seg at disse metodene genererer pseudotilfeldige tall, noe som betyr at tallene ser tilfeldige ut, men genereres ved hjelp av en deterministisk prosess.

For de fleste applikasjoner er tilfeldigheten levert av Kotlins Random-klasse tilstrekkelig. Imidlertid, for mer sikkerhetssensitive applikasjoner, som kryptografi, hvor kvaliteten på tilfeldigheten er av største viktighet, bør man vurdere å bruke java.security.SecureRandom i stedet. SecureRandom er spesielt designet for kryptografiske operasjoner, og tilbyr en høyere kvalitet på tilfeldigheten, men med en potensiell ytelsestradeav.

Kotlin finner ikke opp hjulet på nytt, men tilbyr et Kotlin-vennlig API over Javas mekanismer for generering av tilfeldige tall, noe som gjør det mer idiomatisk og kortfattet å bruke innen Kotlin-prosjekter. Som alltid, når man har å gjøre med tilfeldighet, bør programmerere nøye vurdere bruksområdet for å velge det mest passende verktøyet for jobben.