Werte, die zu einer ungleichmäßigen Verteilung führen würden, werden zurückgewiesen (da 2 ^ 31 nicht durch n teilbar ist). Die Wahrscheinlichkeit, dass ein Wert abgelehnt wird, hängt von n ab. Der ungünstigste Fall ist n = 2 ^ 30 + 1, für den die Wahrscheinlichkeit einer Zurückweisung 1/2 ist und die erwartete Anzahl von Iterationen vor Abschluß der Schleife 2 beträgt. nextInt eine Grenze nextInt, wird die Leistung der nextInt Methode (geringfügig) verringert, und diese Leistungsabnahme wird deutlicher, wenn sich die bound dem halben max int-Wert nähert. Generierung kryptographisch sicherer Pseudozufallszahlen Random und ThreadLocalRandom sind gut genug für den täglichen Gebrauch, sie haben jedoch ein großes Problem: Sie basieren auf einem linearen Kongruenzgenerator, einem Algorithmus, dessen Ausgabe ziemlich leicht vorhergesagt werden kann. Daher sind diese beiden Klassen nicht für kryptographische Zwecke (z. Generieren eindeutiger Zufallszahlen in Java - ViResist. B. zur Schlüsselgenerierung) geeignet. cureRandom in Situationen verwendet cureRandom in denen ein PRNG mit einer Ausgabe erforderlich ist, die sehr schwer vorherzusagen ist.
Wie erzeuge ich eine zufällige ganze Zahl zwischen min und max in Java? (5)
Da die obigen Lösungen den möglichen Überlauf von max-min nicht berücksichtigen, wenn min negativ ist, hier eine andere Lösung (ähnlich der von Kerouac) public static int getRandom(int min, int max) {
if (min > max) {
throw new IllegalArgumentException("Min " + min + " greater than max " + max);}
return (int) ( (long) min + () * ((long)max - min + 1));}
das funktioniert auch wenn du es nennst mit: getRandom(Integer. MIN_VALUE, X_VALUE)
Welche Methode gibt ein zufälliges int zwischen einem Minimum und einem Maximum zurück? Java zufallszahl zwischen 1 und 100 000. Oder existiert eine solche Methode nicht? Was ich suche, ist etwa so: NAMEOFMETHOD (min, max)
(wobei min und max int s sind) das bringt so etwas zurück: 8
(nach dem Zufallsprinzip) Wenn es eine solche Methode gibt, können Sie die entsprechende Dokumentation mit Ihrer Antwort verlinken. Vielen Dank. Update: Versuch, die vollständige Lösung in der nächsten Antwort zu implementieren Ich habe dies: class TestR
{
public static void main (String[]arg)
Random random = new Random();
int randomNumber = xtInt(5) + 2;
(randomNumber);}}
Ich bekomme immer noch die gleichen Fehler vom Compiler: cannot find symbol
symbol: class Random
location: class TestR
^
cannot find symbol
operator + cannot be applied to xtInt, int
incompatible types
found:
JavaNovi247 Ich möchte ein Programm erstellen, das zufällig eine ganze Zahl zwischen 1 und 100 auswählt. Bitten Sie dann den Benutzer, sie zu erraten. Schleifen Sie, bis sie es tun, und sagen Sie ihnen nach jeder falschen Schätzung, ob sie zu hoch oder zu niedrig sind. Ich möchte zwei verschiedene Methoden verwenden, um ihre Eingabe zu validieren. Eine, um zu testen, ob es ein gültiges int ist, die andere, um den Bereich (1-100) zu testen. Diese Sekunde erfordert einen weiteren Parameter für den oberen Bereichswert. Die Probleme die ich habe: 1. Ich verstehe nicht, warum ich eine Zahl mehrmals eingeben muss, bevor meine while (guess! = a) { ausgelöst wird. Beispiel von der Konsole: I am thinking of a number from 1 to 100... guess what it is? 6 6 higher! Java zufallszahl zwischen 1 und 100 things. 2. Wie könnte ich meine Prüfmethoden verwenden und sie auf meine while-Schätzungsschleife beziehen? Nochmals Beispiel von der Konsole: `I am thinking of a number from 1 to 100... guess what it is? 10001 I am thinking of a number from 1 to 100... guess what it is?
Variante 1: () int x = Min + (int)(() * ((Max - Min) + 1)) Die Zahl x ist eine Zufallszahl im Bereich [Min, Max]. Im Detail Die Java Math Funktion () gibt einen double Werte im Bereich [0, 1) zurück, wobei die 1 nicht mit eingeschlossen ist. Man sollte den Zufallswert also zunächst mit 'Max-Min' multiplizieren, um den Bereich abzudecken. () * ( Max - Min) Dies liefert einen Wert im Bereich [0, Max – Min), wobei der Endwert 'Max – Min' nicht enthalten ist. InstAntworten Wie erzeugt man eine Zufallszahl von 1 bis 100 in Java?. Nun sollte der Bereich noch in den gewünschten Bereich verschoben werden, indem man 'Min' dazu addiert. Min + (() * (Max - Min)) Die Zufallszahl enthält allerdings immer noch nicht den Wert 'Max', d. h. man muss 1 zum Wert 'Max – Min' hinzuaddieren. Abschließend müssen noch alle Nachkommastellen durch ein Casten zu (int) entfernt werden. Min + (int)(() * ((Max - Min) + 1)) Variante 2: Random() Random ran = new Random(); int x = Min + xtInt(Max - Min + 1); Die Zahl x ist eine Zufallszahl im Bereich [Min, Max].
Wie erzeugt man eine Zufallszahl von 1 bis 100 in Java? Weiterlesen
Jetzt in der zweiten Schleife bekommen wir 2, die genommen wurde also machen wir nichts. Wir folgen diesem Muster, bis wir zu 4 gelangen, wenn wir 1 entfernen, wird es 0, und wir setzen die neue randomNumber auf 4. Zufallszahlen mit einem angegebenen Startwert erzeugen //Creates a Random instance with a seed of 12345. Java zufallszahl zwischen 1 und 100.html. Random random = new Random(12345L); //Gets a ThreadLocalRandom instance ThreadLocalRandom tlr = rrent(); //Set the instance's seed. tSeed(12345L); Wenn Sie den gleichen Startwert für die Generierung von Zufallszahlen verwenden, werden jedes Mal dieselben Zahlen zurückgegeben. Wenn Sie also für jede Random einen anderen Startwert Random empfiehlt es sich, wenn Sie nicht mit doppelten Zahlen enden möchten. Eine gute Methode, um einen Long, der bei jedem Aufruf anders ist, ist rrentTimeMillis(): Random random = new Random(rrentTimeMillis()); rrent(). setSeed(rrentTimeMillis()); Zufallszahlen mit apache-common lang3 generieren Wir können, um Zufallszahlen mithilfe einer einzelnen Zeile zu generieren.