W Pascalu funkcja random(n) (dla argumentu całkowitego) generuje liczbę całkowitą z zakresu od 0 do n-1. Kluczowe jest to, że podana wartość n stanowi górną granicę wyłączną, więc nie może się pojawić w wyniku.
Dla instrukcji b := random(7) + 3; najpierw analizujemy część random(7):
- możliwe wyniki to: 0, 1, 2, 3, 4, 5, 6,
- czyli minimum = 0, maksimum = 6.
Następnie dodanie stałej + 3 przesuwa każdy możliwy wynik o 3:
- minimum: 0 + 3 = 3,
- maksimum: 6 + 3 = 9,
- zatem b może przyjąć: 3, 4, 5, 6, 7, 8, 9.
Poprawny zapis przedziału to [3;9].
Dlaczego pozostałe odpowiedzi są błędne? Przedział [0;6] ignoruje przesunięcie o 3, czyli odpowiadałby samej funkcji random(7) bez dodawania. Przedział [3;10] wynika z częstego błędu myślowego, że random(7) może zwrócić także 7 (czyli 0..7), co w Pascalu nie jest zgodne z definicją dla argumentu całkowitego. Przedział [1;7] nie pasuje ani do poprawnego zakresu random(7), ani do przesunięcia o 3.
W praktyce warto pamiętać, że do uzyskania zakresu a..b często stosuje się schemat random(b-a+1) + a. Funkcja randomize służy natomiast do zainicjowania generatora (żeby sekwencje nie powtarzały się między uruchomieniami), ale nie zmienia samej definicji zakresu wartości zwracanych przez random(n).