liczba losowa, klasa Random

0

Liczba pseudolosowa z przedziału <-20,-5>
Mam taki kod;

import java.util.Random;

public class LiczbyPseudolosoweUjemne {

	public static void main(String[] args) {

		Random rand = new Random();
		int min = -20;
		int max = -5;
		
		int randomNum = rand.nextInt((max - min) + 1) + min;
		
		System.out.print(randomNum);
	}
}

O ile wiem po co jest '+1' to nie rozumiem, bo według algorytmu;

max=-5
min=-20

-5-(-20)=15 tego nie rozumiem i potem tego żeby było -20 ogólnie tej składni

2

(max - min) + 1 - to jest zakres liczb, w twoim przypadku jest to 16 i to się zgadza, bo od -20 do -5 jest 16 liczb
no a potem masz to przesunięcie względem minimum czyli + min

przesunięcie mam +min czyli -20 ale przesunięcie względem czego?

Funkcja losująca wygląda tak

rand.nextInt((max - min) + 1)

czyli po obliczeniu:

rand.nextInt(16)

Inaczej mówiąc, losujesz liczby od 0 do 15.
No ale ty chcesz losować od -20 do -5, więc na koniec do wylosowanej liczby dodajesz przesunięcie równe min, czyli +(-20) i wtedy masz:
0-20 = -20
15-20 = -5
I masz liczby od -20 do -5.

1

To nie jest trudno zrozumieć. Rozpisz sobie na kartce, podstawiając kilka dowolnych liczb. Pierwsze za min i max daj liczby dodatnie, będzie Ci łatwiej, a następnie przejdź na liczby ujemne. I wszystko stanie się proste.

1 użytkowników online, w tym zalogowanych: 0, gości: 1