JavaRush /Java-Blog /Random-DE /Generieren Sie eine Zufallszahl in einem bestimmten Berei...
L2CCCP
Level 9

Generieren Sie eine Zufallszahl in einem bestimmten Bereich

Veröffentlicht in der Gruppe Random-DE
Hallo auf der anderen Seite des Bildschirms. Jeder von uns steht früher oder später vor der Notwendigkeit, eine Zufallszahl in einem bestimmten Bereich zu generieren, sei es eine reelle Zahl oder eine ganze Zahl. Generieren einer Zufallszahl in einem bestimmten Bereich – 1Wofür? Tatsächlich ist dies nicht wichtig, es könnte sich um eine Funktion zur Berechnung der Wahrscheinlichkeit handeln, ein Ereignis auszulösen, einen zufälligen Multiplikator zu erhalten oder etwas anderes. Also haben wir herausgefunden, warum das nötig ist, nämlich für alles :) Tatsächlich gibt es viele Methoden, um eine Pseudozufallszahl zu erhalten, aber ich werde ein Beispiel mit der Klasse geben Math, nämlich der Methode random(); Was haben wir? Der Aufruf der Methode Math.random()gibt eine pseudozufällige reelle Zahl ( double) aus dem Bereich zurück [0;1), d Was ist, wenn wir unser eigenes Sortiment benötigen? Brauchen wir zum Beispiel eine Pseudozufallszahl aus dem Bereich [0;100)? Wir schreiben den Code:
public static void main(String... args)
{
	final double max = 100.; // Максимальное число для диапазона от 0 до max
	final double rnd = rnd(max);

	System.out.println("Псевдослучайное вещественное число: " + rnd);
}

/**
 * Метод получения псевдослучайного вещественного числа от 0 до max (исключая max);
 */
public static double rnd(final double max)
{
	return Math.random() * max;
}
Es ist nicht schlecht geworden, aber max(in unserem Fall) werden wir es trotzdem nicht hinbekommen. Um eine Zufallszahl im Bereich [0;100] zu erhalten, müssen wir max1 zu unserer Zahl addieren und diese dann in eine Ganzzahl wie intoder umwandeln long(abhängig von den Bereichen, die Sie verwenden). Wir schreiben den Code:
public static void main(String... args)
{
	final int max = 100; // Максимальное число для диапазона от 0 до max
	final int rnd = rnd(max);

	System.out.println("Псевдослучайное целое число: " + rnd);
}

/**
 * Метод получения псевдослучайного целого числа от 0 до max (включая max);
 */
public static int rnd(int max)
{
	return (int) (Math.random() * ++max);
}
Hinweis: Wie Sie sehen können, wurde die Variable „max“ um die Präfixform erhöht. (Wenn Sie nicht wissen, was das ist, empfehle ich Ihnen, meinen Artikel zu lesen .) Großartig, wir haben bekommen, was wir wollten, aber wenn wir einen Bereich nicht von 0 benötigen, sondern zum Beispiel [10;75], schreiben wir den Code:
public static void main(String... args)
{
	final int min = 10; // Минимальное число для диапазона
	final int max = 75; // Максимальное число для диапазона
	final int rnd = rnd(min, max);

	System.out.println("Псевдослучайное целое число: " + rnd);
}

/**
 * Метод получения псевдослучайного целого числа от min до max (включая max);
 */
public static int rnd(int min, int max)
{
	max -= min;
	return (int) (Math.random() * ++max) + min;
}
Parsen des Codes aus der Methode rnd:

Минимальное число диапазона = 10;
Максимальное число диапазона = 75;
max -= min; // Отнимаем от максимального значения минимальное для получения множителя псевдослучайного вещественного числа.
Die maximale Zahl nach der Berechnung beträgt 65. Die pseudozufällige reelle Zahl (zum Beispiel) ist 0,18283417347179454 (wurde durch Aufrufen erhalten Math.random()). Die maximale Zahl wurde vor der Multiplikation mit einer Präfixform erhöht. Die maximale Zahl beträgt jetzt 66. Multiplizieren Sie 0,18283417347179454 mit 66. Das Ergebnis der Multiplikation ist 12,06705544913844. Wir konvertieren das Ergebnis der Multiplikation der Maximalzahl mit einer pseudozufälligen reellen Zahl in einen ganzzahligen Typ int. Wir addieren die minimale Zahl zum transformierten Ergebnis, die gleich 12 ist. Wir geben das Ergebnis zurück: 22 Wie aus der Analyse hervorgeht, geben wir als Ergebnis unser Minimum zurück, selbst wenn die pseudozufällige reelle Zahl gleich Null ist der Addition unserer Mindestzahl mit dem Ergebnis der Multiplikation. Ich hoffe, das war nützlich und informativ für Sie. Viel Glück beim Beherrschen von Java ;) Noch ein paar meiner Artikel: Was ist Inkrementieren und Dekrementieren? Der Modulo-Divisionsoperator
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION