Erhalten Sie eine Zufallszahl in Kotlin

David Mbochi Njonge 20 Juni 2023
  1. Verwenden Sie die Erweiterungsfunktion random() von IntRange in Kotlin
  2. Verwenden Sie random() mit Range Inclusive in Kotlin
  3. Verwenden Sie random() mit Range Exclusive in Kotlin
  4. Verwenden Sie die Erweiterungsfunktion shuffled() von Iterable in Kotlin
  5. Verwenden Sie ThreadLocalRandom in Kotlin
  6. Abschluss
Erhalten Sie eine Zufallszahl in Kotlin

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:

  1. Verwendung der Erweiterungsfunktion random() von IntRange.
  2. Verwendung der shuffled()-Erweiterungsfunktion von Iterable.
  3. 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 Mbochi Njonge avatar David Mbochi Njonge avatar

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