Ustawiono chodziarza na osi liczbowej w punkcie 0. W każdym ruchu chodziarz porusza się losowo w lewo lub w prawo. Metodą Monte Carlo przeprowadź n symulacji, w których sprawdzisz, w jakim punkcie znalazł się chodziarz po wykonaniu k kroków. Następnie dla każdej pozycji parzystej (od a do b) utwórz słupek ze znaków *, który będzie wizualizował procentowy udział danej pozycji we wszystkich pozycjach końcowych. Każdy znak * ma oznaczać 1 punkt procentowy. Łącznie należy wypisać m znaków *. W celu wylosowania tego samego rozkładu kroków dla każdego wywołania programu posłużymy się ziarnem (seed) jako argumentem funkcji losującej.
Działanie programu sprawdź dla n = 100 000, k = 10, a = -10, b = 10, m = 100, seed = 3.
Specyfikacja problemu:
Dane:
n – liczba naturalna; liczba symulacji
k – liczba naturalna; liczba wykonanych kroków
a – liczba całkowita; pierwsza z pozycji na osi liczbowej
b – liczba całkowita; ostatnia z pozycji na osi liczbowej
m – liczba naturalna; liczba punktów procentowych zaznaczonych za pomocą znaku *, oznaczających procentowy udział pozycji we wszystkich pozycjach końcowych
seed – liczba naturalna; argument funkcji losującej
Wynik:
m znaków *; „wykres” procentowego udziału kolejnych pozycji we wszystkich pozycjach końcowych
Linia 1. import java kropka util kropka Random średnik.
Linia 3. public class Main otwórz nawias klamrowy.
Linia 4. 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 5. int n znak równości 100000 średnik.
Linia 6. int k znak równości 10 średnik.
Linia 7. int otwórz nawias kwadratowy zamknij nawias kwadratowy pozycje znak równości new int otwórz nawias kwadratowy k asterysk 2 plus 1 zamknij nawias kwadratowy średnik.
Linia 8. int m znak równości 100 średnik.
Linia 9. int seed znak równości 3 średnik.
Linia 10. Random generator znak równości new Random otwórz nawias okrągły seed zamknij nawias okrągły średnik.
Linia 12. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik plus plus i zamknij nawias okrągły otwórz nawias klamrowy.
Linia 13. prawy ukośnik prawy ukośnik początkowa pozycja.
Linia 14. int x znak równości 0 średnik.
Linia 15. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny k średnik plus plus j zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. prawy ukośnik prawy ukośnik losowa liczba minus 1 lub 1.
Linia 17. x plus znak równości generator kropka nextInt otwórz nawias okrągły 2 zamknij nawias okrągły asterysk 2 minus 1 średnik.
Linia 18. zamknij nawias klamrowy.
Linia 19. plus plus pozycje otwórz nawias kwadratowy x plus k zamknij nawias kwadratowy średnik.
Linia 20. zamknij nawias klamrowy.
Linia 22. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny k asterysk 2 plus 1 średnik i plus znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 23. prawy ukośnik prawy ukośnik System kropka out kropka print otwórz nawias okrągły pozycje otwórz nawias kwadratowy i zamknij nawias kwadratowy plus cudzysłów cudzysłów zamknij nawias okrągły średnik.
Linia 24. int slupek znak równości otwórz nawias okrągły int zamknij nawias okrągły Math kropka round otwórz nawias okrągły m asterysk pozycje otwórz nawias kwadratowy i zamknij nawias kwadratowy prawy ukośnik n zamknij nawias okrągły średnik.
Linia 26. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny slupek średnik plus plus j zamknij nawias okrągły otwórz nawias klamrowy.
Linia 27. System kropka out kropka print otwórz nawias okrągły apostrof asterysk apostrof zamknij nawias okrągły średnik.
Linia 28. zamknij nawias klamrowy.
Linia 29. System kropka out kropka print otwórz nawias okrągły apostrof lewy ukośnik n apostrof zamknij nawias okrągły średnik.
Linia 30. zamknij nawias klamrowy.
Linia 31. zamknij nawias klamrowy.
Linia 32. zamknij nawias klamrowy.
31
Ćwiczenie 2
W programie utworzono dwuwymiarową tablicę, która zawiera wektory przesunięcia. Przeprowadź prostą symulację, w której wyznaczysz końcową pozycję cząsteczki przesuwanej o kolejne wektory z tablicy, na podstawie jej położenia początkowego (x, y). Końcową pozycję wypisz jako dwie liczby oddzielone znakiem spacji zaokrąglone do dwóch miejsc po przecinku. Symulację przetestuj dla podanego punktu początkowego: .
Specyfikacja problemu:
Dane:
(x, y) – liczby rzeczywiste, współrzędne punktu początkowego