Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki
Problem 1

Napisz w języku Java dwa programy generujące liczby losowe. Pierwszy z nich niech symuluje rzut monetą. Drugi ma symulować rzut sześcienną kostką.

Symulacja rzutu monetą

Specyfikacja problemu:

Dane:

  • random – zmienna będąca instancją klasy generatora pseudolosowego

Wynik:

Program, w zależności od wyniku symulacji, wyświetla słowo ORZEŁ lub RESZKA.

Ral8WaePt1Lwp
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.

Symulacja rzutu kością sześcienną

Specyfikacja problemu:

Dane:

  • random – zmienna będąca instancją klasy generatora pseudolosowego

Wynik:

Program na standardowym wyjściu wyświetla wylosowaną liczbę: 1, 2, 3, 4, 5 bądź 6.

REvVkKbR9yALT
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Polecenie 1

Porównaj swoje rozwiązanie z filmem.

RZLtfzbsAaJF41
Film nawiązujący do treści materiału: Generator liczb pseudolosowych.

Podsumowanie

Jednym ze sposobów wygenerowania liczby pseudolosowej w języku Java jest wykorzystanie klasy wbudowanej java.util.Random. Aby jej użyć, musimy ją najpierw zaimportować poprzez dodanie następującego kodu na początku pliku:

Linia 1. import java kropka util kropka Random średnik.

Napiszmy zatem program, który wygeneruje liczbę pseudolosową, zapamięta ją w postaci zmiennej liczba, a następnie wyświetli na ekranie.

Zaczniemy od utworzenia nowego generatora, czyli obiektu klasy Random:

Linia 1. Random rand znak równości new Random otwórz nawias okrągły zamknij nawias okrągły średnik.

Aby wylosować liczbę całkowitą, wywołujemy funkcję nextInt() generatora rand:

Linia 1. int liczba znak równości rand kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik.

Na koniec wylosowaną liczbę wyświetlamy na ekranie:

Linia 1. System kropka out kropka println otwórz nawias okrągły liczba zamknij nawias okrągły średnik.

Oto kod całego programu:

Linia 1. import java kropka util kropka Random średnik. Linia 3. public class LiczbaLosowa otwórz nawias klamrowy. Linia 5. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. Random rand znak równości new Random otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 8. int liczba znak równości rand kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 10. System kropka out kropka println otwórz nawias okrągły liczba zamknij nawias okrągły średnik. Linia 12. zamknij nawias klamrowy. Linia 13. zamknij nawias klamrowy.

Nie trzeba ograniczać się do losowania liczb całkowitych. Do dyspozycji mamy także takie funkcje jak nextBoolean()nextFloat():

  • boolean m = rand.nextBoolean() – zapisuje w zmiennej m wylosowaną wartość true albo false;

  • float m = rand.nextFloat() – zapisuje w zmiennej m wylosowaną liczbę zmiennoprzecinkową.

Generowanie liczb należących do wybranego zakresu

Udoskonalmy program tak, aby losował liczby należące do określonego przedziału. Przykładowo, spróbujmy wylosować wartość z zakresu od 7 do 48:

Linia 1. int liczba znak równości rand kropka nextInt otwórz nawias okrągły liczebnośćPrzedziału zamknij nawias okrągły plus liczbaStartowa średnik.

Liczba, którą dodajemy do wyniku otrzymanego dzięki funkcji rand.nextInt(), jest dolną granica przedziału (wynosi ona zatem 7). Z kolei argument funkcji nextInt() opisuje liczbę elementów przedziału. Chcąc zatem wylosować liczbę nie mniejszą niż 7 i nie większą niż 48, powinniśmy wpisać kod:

Linia 1. int liczba znak równości rand kropka nextInt otwórz nawias okrągły 42 zamknij nawias okrągły plus 7 średnik.

W przypadku losowania liczb z zakresu <100, 200> kod przybiera postać:

Linia 1. int liczba znak równości rand kropka nextInt otwórz nawias okrągły 101 zamknij nawias okrągły plus 100 średnik.

Możemy także losować liczby ujemne. Przedstawiony niżej fragment kodu pozwala zapisać w zmiennej liczba wylosowaną wartość z zakresu <-7, 5>:

Linia 1. int liczba znak równości rand kropka nextInt otwórz nawias okrągły 13 zamknij nawias okrągły minus 7 średnik.

Spróbujmy zatem uogólnić sposób ustalania przedziału losowanych liczb:

Linia 1. int liczba znak równości rand kropka nextInt otwórz nawias okrągły liczebnośćPrzedziału zamknij nawias okrągły plus liczbaStartowa średnik.
<liczbaStartowa,liczebnośćPrzedziału+liczbaStartowa1>
Praca domowa

Napisz program, który wylosuje liczbę z przedziału <-12, 77>.

Przykładowy program w języku Java

Napiszmy program, który będzie generował liczby z zakresu <1, 10>. Po każdym losowaniu pojawi się napis „informatyka” wyświetlony tyle razy, ile wynosi wylosowana liczba. Program wykona opisane czynności dziesięciokrotnie.

Zaczniemy od zbudowania szkieletu funkcji głównej – main() – oraz utworzenia obiektu klasy Random o nazwie rand.

Ważne!

Utworzenie obiektu jest niezbędne, ponieważ korzystamy z wbudowanej klasy języka Java (Random).

Linia 1. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 3. Random rand znak równości new Random otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 5. zamknij nawias klamrowy.

Następnie otworzymy pętlę. Zapisane w niej instrukcje zostaną wykonane dziesięć razy:

Linia 1. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 3. Random rand znak równości new Random otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 5. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. zamknij nawias klamrowy. Linia 9. zamknij nawias klamrowy.

Losujemy liczbę całkowitą, korzystając z funkcji nextInt() i zapisujemy ją w zmiennej liczba:

Linia 1. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 3. Random rand znak równości new Random otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 5. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. int liczba znak równości rand kropka nextInt otwórz nawias okrągły 10 zamknij nawias okrągły plus 1 średnik. Linia 8. zamknij nawias klamrowy. Linia 10. zamknij nawias klamrowy.

Mamy wypisać słowo „informatyka” tyle razy, ile wynosi wygenerowana liczba. W tym celu użyjemy pętli for:

Linia 1. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 3. Random rand znak równości new Random otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 5. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. int liczba znak równości rand kropka nextInt otwórz nawias okrągły 10 zamknij nawias okrągły plus 1 średnik. Linia 9. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny liczba średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. System kropka out kropka println otwórz nawias okrągły cudzysłów informatyka cudzysłów zamknij nawias okrągły średnik. Linia 11. zamknij nawias klamrowy. Linia 12. zamknij nawias klamrowy. Linia 13. zamknij nawias klamrowy.

Wcześniej (przed pętlą zagnieżdżonąpętla zagnieżdżonapętlą zagnieżdżoną) umieśćmy instrukcję służącą do wypisania wylosowanej liczby. Pozwoli to sprawdzić, czy program działa prawidłowo:

Linia 1. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 3. Random rand znak równości new Random otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 5. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. int liczba znak równości rand kropka nextInt otwórz nawias okrągły 10 zamknij nawias okrągły plus 1 średnik. Linia 9. System kropka out kropka println otwórz nawias okrągły liczba zamknij nawias okrągły średnik. Linia 11. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny liczba średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 12. System kropka out kropka println otwórz nawias okrągły cudzysłów informatyka cudzysłów zamknij nawias okrągły średnik. Linia 13. zamknij nawias klamrowy. Linia 14. zamknij nawias klamrowy. Linia 15. zamknij nawias klamrowy.

A oto kod całego programu:

Linia 1. import java kropka util kropka Random średnik. Linia 3. public class LiczbaLosowa otwórz nawias klamrowy. Linia 5. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. Random rand znak równości new Random otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 9. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 11. int liczba znak równości rand kropka nextInt otwórz nawias okrągły 10 zamknij nawias okrągły plus 1 średnik. Linia 13. System kropka out kropka println otwórz nawias okrągły liczba zamknij nawias okrągły średnik. Linia 15. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny liczba średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. System kropka out kropka println otwórz nawias okrągły cudzysłów informatyka cudzysłów zamknij nawias okrągły średnik. Linia 17. zamknij nawias klamrowy. Linia 18. zamknij nawias klamrowy. Linia 19. zamknij nawias klamrowy. Linia 20. zamknij nawias klamrowy.

Słownik

pętla zagnieżdżona
pętla zagnieżdżona

pętla umieszczona wewnątrz innej pętli