A) Generowanie liczb pseudolosowych według rozkładu równomiernego z użyciem funkcji rnd
Funkcja rnd(x) generuje liczby pseudolosowe z przedziału [0,
x] o rozkładzie równomiernym. Aby sprawdzić co to oznacza w praktyce
otwórz przyciskiem [f(x)] wykaz funkcji i znajdź tą funkcję w grupie "Random Numbers",
przeczytaj jej opis i wstaw (lub skopiuj) kilkakrotnie do dokumentu, z argumentem 5, wyswietlając wartość klawiszem [=] :
rnd(5)=
rnd(5)=
rnd(5)=
rnd(5)=
Umieść kursor we wzorze z rnd i naciskaj klawisz [F9] który oznacza "przelicz ponownie".
W jakim przedziale mieszczą się generowane liczby pseudolosowe? Jakie liczby bedzie generować (2+rnd(5)),
a jakie rnd(5+2)?
Popatrz na rysunek obok i używając funkcji rnd napisz wyrażenie do generowania liczb z przedziału 20 do 25
(czy to jest przedział dłuższy niż poprzednio?).
Uogólniając - zdefiniuj funkcję do generowania liczby pseudolosowej z dowolnego danego przedziału (A,B). Nazwij ją np.: losAB(A,B) |
B) ZADANIE - Równomierne rozsiewanie punktów w zadanym prostokącie:
Mając DANE:
wygeneruj i przedstaw na wykresie (jak na rys. obok) N punktów o
współrzędnych Xi,Yi będacych liczbami pseudolosowymi z przedziałów określonych
danymi powyżej wartosciami granicznymi Xmin, Xmax, Ymin, Ymax
Zadanie możesz rozwiązać albo używając funkcji runif(...) (generującej od razu cały wektor) albo wykorzystując funkcję losAB(A,B) zdefiniowaną w poprzednim zadaniu (do generowania pojedynczych elementów wektora, jako zmiennych indeksowanych). |
Uwaga: Przeformatuj wykres na typ "punktowy" (ang.: TYPE = POINTS)
Sprawdź czy program działa dla różnych danych, na przykład:
a) N = 1500, Xmin = -20, Xmax = 80, Ymin = -0.5, Ymax = 0.5
b) N = 2000, Xmin = 120, Xmax = 180, Ymin = 15, Ymax = 35
Gdyby podzielić obszar z punktami na pasy pionowe o równej szerokości, a nastepnie zliczyć liczbę punktów w każdym pasie i przedstawić wyniki w postaci słupków, to jak w przybliżeniu wyglądałby otrzymany histogram?