Erhalten Sie eine Zufallszahl in Kotlin
-
Verwenden Sie die Erweiterungsfunktion
random()
vonIntRange
in Kotlin -
Verwenden Sie
random()
mit Range Inclusive in Kotlin -
Verwenden Sie
random()
mit Range Exclusive in Kotlin -
Verwenden Sie die Erweiterungsfunktion
shuffled()
vonIterable
in Kotlin -
Verwenden Sie
ThreadLocalRandom
in Kotlin - Abschluss
Eine Zufallszahl wird aus einer Reihe von Zahlen generiert, wobei ein Algorithmus verwendet wird, der sicherstellt, dass jede Zahl die gleiche Wahrscheinlichkeit hat, generiert zu werden.
Abgesehen von Zahlen können wir verschiedene Arten von Datentypen generieren. Beispielsweise können wir die Methode UUID.randomUUID()
von java.util
verwenden, um eine zufällige Zeichenfolge zu generieren.
Diese Funktion, die es dem Entwickler ermöglicht, zufällige Zeichenfolgen zu generieren, ist sehr wichtig, da sie hilft, eindeutige Kennungen für Daten zu generieren, eindeutige Passwörter zu generieren und eine Bestellverfolgungskennung in einer E-Commerce-Umgebung zu generieren.
Dieses Tutorial zeigt, wie wir mit Kotlin eine Zufallszahl generieren können.
Verwenden Sie die Erweiterungsfunktion random()
von IntRange
in Kotlin
Eine Erweiterungsfunktion ist eine Möglichkeit, einer Klasse Funktionalität hinzuzufügen, ohne den vorhandenen Code zu ändern oder Entwurfsmuster wie das Decorator-Muster zu verwenden.
Gehen Sie in die IntelliJ-Entwicklungsumgebung und wählen Sie Datei
> Neu
> Projekt
. Geben Sie im sich öffnenden Fenster den Namen
des Projekts als kotlin-random
ein, wählen Sie Kotlin
im Abschnitt Sprache
, wählen Sie Intellij
im Abschnitt System erstellen
und drücken Sie schließlich die Schaltfläche Erstellen
. um ein neues Projekt zu erstellen.
Verwenden Sie random()
mit Range Inclusive in Kotlin
Erstellen Sie eine Main.kt
-Datei im Ordner kotlin
und kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein.
fun exampleOne(): Int{
return (0..10).random();
}
fun main(){
println("... Example One ...")
println(exampleOne());
}
In diesem Code haben wir eine Methode namens exampleOne()
erstellt, die ein Int
zurückgibt. Die Ganzzahl wird zufällig durch die Funktion random()
in der Methode generiert.
Die Funktion random()
ist eine Erweiterungsfunktion von IntRange
und gibt ein zufällig generiertes Element aus dem bereitgestellten Bereich zurück.
Wenn der Bereich leer ist, wirft die Methode eine IllegalArgumentException
. Ein Bereich ist leer, wenn das erste Element des Bereichs größer als das letzte Element des Bereichs ist.
Die Funktion random()
verwendet die Erweiterungsfunktion nextInt()
von Random
hinter den Kulissen, um eine Zahl zu erzeugen, die innerhalb des bereitgestellten Bereichs gleichmäßig verteilt ist.
Die generierte Zahl kann eine beliebige Zahl von 0
bis einschließlich 10
sein. Wenn Sie den obigen Code mehrmals ausführen, werden Sie feststellen, dass Sie eine beliebige Zufallszahl im Bereich erhalten.
Ausgang:
... Example One ...
3
Verwenden Sie random()
mit Range Exclusive in Kotlin
Kommentieren Sie das vorherige Beispiel aus und kopieren Sie den folgenden Code und fügen Sie ihn danach in die Datei Main.kt
ein.
fun exampleTwo(): Int{
return (0 until 10).random();
}
fun main(){
println("... Example Two ...")
println(exampleTwo());
}
Im vorherigen Beispiel haben wir ..
im Bereich verwendet, der zur Bezeichnung der rangeTo()
-Methode verwendet wird. In diesem Beispiel haben wir jedoch bis
verwendet, was die Erweiterungsfunktion Int.until()
bezeichnet.
Die Erweiterungsfunktionen until()
geben einen Bereich vom Startwert bis zum letzten angegebenen Wert zurück. Der Startwert wird oft als this
bezeichnet, um den aktuellen Wert anzugeben, auf den eingewirkt wird.
Wenn Sie das vorherige Beispiel mehrmals ausführen, werden Sie feststellen, dass immer eine Zufallszahl generiert wird, aber niemals ein Wert von 10
.
Ausgang:
... Example Two ...
5
Verwenden Sie die Erweiterungsfunktion shuffled()
von Iterable
in Kotlin
Die Funktion shuffled()
ist eine Erweiterungsfunktion der Schnittstelle Iterable
und gibt eine Liste
von Elementen zurück. Die zurückgegebene Liste ermöglicht es uns, die Erweiterungsfunktion random()
der Collection
-Schnittstelle zu verwenden, um eine Zufallszahl zu generieren.
Kommentieren Sie das vorherige Beispiel und kopieren Sie den folgenden Code und fügen Sie ihn danach in die Datei Main.kt
ein.
fun exampleThree(): Int{
return (0..10).shuffled().random()
}
fun main(){
println("... Example Three ...")
println(exampleThree());
}
In diesem Code haben wir eine Methode namens exampleThree()
erstellt, die eine in der Methode generierte Ganzzahl zurückgibt.
Der Zahlenbereich von 0
bis 10
wird von der Funktion shuffled()
als gemischte Liste zurückgegeben. Beachten Sie, dass der Bereich inklusive ist.
Wenn Sie möchten, dass der Bereich exklusiv ist, verwenden Sie die Funktion Int.until()
, wie im vorherigen Beispiel beschrieben.
Die Funktion random()
generiert eine Zufallszahl aus der gemischten Liste, und wenn die Liste leer ist, wirft die Funktion NoSuchElementException
.
Wenn Sie diesen Code mehrmals ausführen, wird für jede Ausführung eine Zufallszahl aus der gemischten Liste generiert.
Ausgang:
... Example Three ...
7
Verwenden Sie ThreadLocalRandom
in Kotlin
Der aktuelle Thread verwendet den ThreadLocalRandom
, um eine Zufallszahl zu generieren. Dieser Generator wird hauptsächlich in nebenläufigen Programmen verwendet, um Overhead und Konflikte zu reduzieren.
Der Generator kommt insbesondere dann zum Einsatz, wenn verschiedene Programme parallel auf Zufallszahlen auf Threadpools zugreifen.
Wenn alle unsere Verwendungen die Form ThreadLocalRandom.current.nextX()
haben, wobei das X
entweder nextInt()
, nextLong()
usw. sein kann, stellt dies sicher, dass ein Generator nicht von mehreren Threads gemeinsam genutzt werden kann .
Die current()
-Methode ist eine statische Methode, die ein ThreadLocalRandom
-Objekt zurückgibt und nur vom aktuellen Thread aufgerufen werden kann.
Kommentieren Sie den vorherigen Code und kopieren Sie den folgenden Code und fügen Sie ihn danach in die Datei Main.kt
ein.
import java.util.concurrent.ThreadLocalRandom
fun exampleFour(bound: Int): Int{
return ThreadLocalRandom.current().nextInt(bound)
}
fun main(){
println("... Example Four ...")
println(exampleFour(9))
}
Die Methode nextInt()
generiert eine Pseudozufallszahl, die gleichmässig zwischen 0
bis zu der von uns als bound
angegebenen Zahl verteilt ist.
Wenn bound
nicht positiv ist, wirft die Methode IllegalArgumentException
. Wenn Sie den obigen Code mehrmals ausführen, erhalten Sie eine andere Pseudozufallszahl, die einheitlich generiert wird.
Ausgang:
... Example Four ...
3
Abschluss
Dieses Tutorial hat die verschiedenen Möglichkeiten gelehrt, wie wir eine Zufallszahl in Kotlin generieren können, und die behandelten Ansätze umfassen:
- Verwendung der Erweiterungsfunktion
random()
vonIntRange
. - Verwendung der
shuffled()
-Erweiterungsfunktion vonIterable
. - Verwendung von
ThreadLocalRandom
.
Wir haben auch gelernt, den generierten Bereich so zu ändern, dass er einschließend oder exklusiv ist, indem Sie ..
oder bis
im Bereich verwenden.
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub