IRandomGenerator Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Die RandomGenerator Schnittstelle wurde entwickelt, um ein allgemeines Protokoll für Objekte bereitzustellen, die zufällige oder (in der Regel) pseudorandomsequenzen von Zahlen (oder booleschen Werten) generieren.
[Android.Runtime.Register("java/util/random/RandomGenerator", "", "Java.Util.RandomGenerators.IRandomGeneratorInvoker", ApiSince=35)]
public interface IRandomGenerator : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/random/RandomGenerator", "", "Java.Util.RandomGenerators.IRandomGeneratorInvoker", ApiSince=35)>]
type IRandomGenerator = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Abgeleitet
- Attribute
- Implementiert
Hinweise
Die RandomGenerator Schnittstelle wurde entwickelt, um ein allgemeines Protokoll für Objekte bereitzustellen, die zufällige oder (in der Regel) pseudorandomsequenzen von Zahlen (oder booleschen Werten) generieren. Eine solche Sequenz kann entweder durch wiederholtes Aufrufen einer Methode abgerufen werden, die einen einzelnen pseudozufällig gewählten Wert zurückgibt, oder durch Aufrufen einer Methode, die einen Datenstrom von pseudorandig gewählten Werten zurückgibt.
Im Idealfall, wenn ein impliziter oder explizit angegebener Wertebereich gegeben ist, würde jeder Wert unabhängig und einheitlich aus diesem Bereich ausgewählt. In der Praxis muss man sich vielleicht mit einer Annäherung an Unabhängigkeit und Einheitlichkeit begnügen.
Im Fall von int, longund boolean Werten, wenn keine explizite Spezifikation des Bereichs vorhanden ist, enthält der Bereich alle möglichen Werte des Typs. Im Fall von float und double Werten wird zuerst ein Wert immer einheitlich aus der Gruppe von 2<sup>w</sup-Werten> zwischen 0,0 (einschließlich) und 1,0 (exklusiv) ausgewählt, wobei w für float Werte und Double#PRECISION für double Werte bestimmt istFloat#PRECISION, sodass sich benachbarte Werte von 2<sup>&minus unterscheiden;w</sup> (beachten Sie, dass dieser Satz eine Teilmenge des Satzes aller darstellbaren Gleitkommawerte zwischen 0,0 (einschließlich) und 1,0 (exklusiv)) ist); wenn ein expliziter Bereich angegeben wurde, wird die ausgewählte Zahl rechnerisch skaliert und übersetzt, sodass sie ungefähr einheitlich aus diesem expliziten Bereich ausgewählt wurden.
Jede Methode, die einen Datenstrom zurückgibt, erzeugt einen Datenstrom von Werten, die jeweils auf die gleiche Weise ausgewählt werden wie für eine Methode, die einen einzelnen pseudorandom ausgewählten Wert zurückgibt. Wenn beispielsweise r implementiert wird RandomGenerator, gibt der Methodenaufruf r.ints(100) einen Datenstrom von 100 int Werten zurück. Dies sind nicht unbedingt die genauen Werte, die zurückgegeben werden würden, wenn sie stattdessen r.nextInt() 100 Mal aufgerufen worden wären. Alles, was garantiert ist, ist, dass jeder Wert im Datenstrom in einer ähnlichen pseudorandom-Weise aus demselben Bereich ausgewählt wird.
Jedes Objekt, das die RandomGenerator Schnittstelle mithilfe eines Pseudorandomalgorithmus implementiert, wird angenommen, eine endliche Menge an Zustand zu enthalten. Wenn Sie ein solches Objekt verwenden, um einen pseudozufällig gewählten Wert zu generieren, wird der Zustand durch Berechnen eines neuen Zustands als Funktion des aktuellen Zustands geändert, ohne auf andere Informationen als den aktuellen Zustand zu verweisen. Die Anzahl der unterschiedlichen möglichen Zustände eines solchen Objekts wird als Seine Periode bezeichnet. (Einige Implementierungen der RandomGenerator Schnittstelle können wirklich zufällig und nicht pseudorandom sein, z. B. auf das statistische Verhalten eines physischen Objekts, um ausgewählte Werte abzuleiten. Solche Implementierungen haben keinen festen Zeitraum.)
In der Regel müssen Objekte, die die RandomGenerator Schnittstelle implementieren, nicht threadsicher sein. Es wird empfohlen, Multithread-Anwendungen entweder ThreadLocalRandom oder (vorzugsweise) Pseudorandomzahlengeneratoren zu verwenden, die die SplittableGenerator Oder-Schnittstelle JumpableGenerator implementieren.
Objekte, die implementiert RandomGenerator werden, sind in der Regel nicht kryptografisch sicher. Erwägen Sie stattdessen die Verwendung SecureRandom eines kryptografisch sicheren Pseudozuschreibungszahlengenerators für die Verwendung durch sicherheitsrelevante Anwendungen. Beachten Sie jedoch, dass die SecureRandomRandomGenerator Schnittstelle implementiert wird, sodass Instanzen von SecureRandom möglicherweise austauschbar mit anderen Typen von Pseudorandomgeneratoren in Anwendungen verwendet werden können, die keinen sicheren Generator erfordern.
Sofern nicht anders angegeben, führt die Verwendung von NULL für ein Beliebiges Methodenargument zu einer NullPointerException.
Hinzugefügt in 17.
Java Dokumentation für java.util.random.RandomGenerator.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Eigenschaften
| Name | Beschreibung |
|---|---|
| Default |
Gibt eine |
| Handle |
Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab. (Geerbt von IJavaObject) |
| IsDeprecated |
Gibt "true" zurück, wenn die Implementierung von RandomGenerator (Algorithmus) zur Deaktivierung markiert wurde. |
| JniIdentityHashCode |
Gibt den Wert |
| JniManagedPeerState |
Status des verwalteten Peers. (Geerbt von IJavaPeerable) |
| JniObjectReferenceControlBlock |
Die |
| JniPeerMembers |
Mitgliedszugriff und Aufrufunterstützung. (Geerbt von IJavaPeerable) |
| PeerReference |
Gibt eine JniObjectReference der umbrochenen Java Objektinstanz zurück. (Geerbt von IJavaPeerable) |
Methoden
| Name | Beschreibung |
|---|---|
| Disposed() |
Wird aufgerufen, wenn die Instanz verworfen wurde. (Geerbt von IJavaPeerable) |
| DisposeUnlessReferenced() |
Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen |
| Finalized() |
Wird aufgerufen, wenn die Instanz abgeschlossen wurde. (Geerbt von IJavaPeerable) |
| NextBoolean() |
Gibt einen pseudozufällig ausgewählten Wert zurück |
| NextBytes(Byte[]) |
Füllt ein vom Benutzer bereitgestelltes Bytearray mit generierten Bytewerten, die pseudozufällig aus dem Wertebereich zwischen -128 (einschließlich) und 127 (einschließlich) ausgewählt wurden. |
| NextDouble() |
Gibt einen Pseudorandomwert |
| NextDouble(Double, Double) |
Gibt einen pseudozufällig ausgewählten |
| NextDouble(Double) |
Gibt einen pseudozufällig ausgewählten |
| NextExponential() |
Gibt einen nichtnegativen |
| NextFloat() |
Gibt einen Pseudorandomwert |
| NextFloat(Single, Single) |
Gibt einen pseudozufällig ausgewählten |
| NextFloat(Single) |
Gibt einen pseudozufällig ausgewählten |
| NextGaussian() |
Gibt einen |
| NextGaussian(Double, Double) |
Gibt einen |
| NextInt() |
Gibt einen pseudozufällig ausgewählten Wert zurück |
| NextInt(Int32, Int32) |
Gibt einen pseudozufällig ausgewählten |
| NextInt(Int32) |
Gibt einen pseudozufällig ausgewählten |
| NextLong() |
Gibt einen pseudozufällig ausgewählten Wert zurück |
| NextLong(Int64, Int64) |
Gibt einen pseudozufällig ausgewählten |
| NextLong(Int64) |
Gibt einen pseudozufällig ausgewählten |
| Of(String) |
Gibt eine Instanz davon zurück, die |
| SetJniIdentityHashCode(Int32) |
Legen Sie den von |
| SetJniManagedPeerState(JniManagedPeerStates) |
Die |
| SetPeerReference(JniObjectReference) |
Legen Sie den von |
| UnregisterFromRuntime() |
Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt. (Geerbt von IJavaPeerable) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
Die |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |