Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Tłumaczenie: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
Używanie RANDOMIZE i RND
SPIS TREŚCI |
|
W tym rozdziale omawiana jest funkcja RND oraz polecenie RANDOMIZE. Oboje są wykorzystywani w związku z liczbami losowymi, zatem musisz uważać, aby ich nie mylić. Znajdują się na tym samym klawiszu (T); RANDOMIZE musiało być skrócone do RAND.
W pewnym sensie RND przypomina funkcję: wykonuje obliczenia i tworzy pewien wynik. Niezwykłe jest to, iż nie potrzebuje argumentu.
Przy każdym użyciu wynikiem jest nowa liczba losowa w zakresie od 0 do 1. (Czasami może ona być równa 0, lecz nigdy nie jest równa 1.)
Wypróbuj:
10 PRINT RND 20 GO TO 10 |
aby zobaczyć, jak różnią się kolejne wyniki. Czy możesz w nich rozpoznać jakąś prawidłowość? Nie powinieneś; 'losowy' oznacza, że taka prawidłowość nie istnieje.
W rzeczywistości RND nie jest naprawdę losowe, ponieważ przyjmuje wartości ze stałego ciągu 65536 liczb. Jednakże są one tak ze sobą pomieszane, że przynajmniej nie tworzą żadnego oczywistego układu, a o funkcji RND mówimy, że jest pseudolosowa.
RND daje liczby losowe w zakresie od 0 do 1, jednak łatwo możesz
otrzymać liczby losowe w innych zakresach. Na przykład
Oto ten program:
10 REM program rzutow kostkami do gry 20 CLS 30 FOR n=1 TO 2 40 PRINT 1+INT (RND*6);" ", 50 NEXT n 60 INPUT a$: GO TO 20 |
Naciskaj ENTER za każdym razem, gdy chcesz rzucić kostkami.
Polecenie RANDOMIZE jest wykorzystywane do zmuszania RND, aby rozpoczynało od określonego miejsca w swoim ciągu liczb, co możesz zobaczyć za pomocą tego programu:
10 RANDOMIZE 1 20 FOR n=1 TO 5: PRINT RND,: NEXT n 30 PRINT: GO TO 10 |
Po każdym wykonaniu RANDOMIZE 1 ciąg liczb RND rozpoczyna się od 0.0022735596. W poleceniu RANDOMIZE możesz użyć innych liczb od 1 do 65535, aby RND rozpoczynało w innym miejscu.
Jeśli miałeś jakiś program z RND i miał on także kilka błędów, których nie znalazłeś, wtedy pomocnym może się okazać użycie polecenia takiego jak RANDOMIZE, aby program zachowywał się tak samo przy każdym uruchomieniu.
Samo RANDOMIZE (i RANDOMIZE 0, które daje ten sam efekt) jest inne, ponieważ rzeczywiście dokonuje uprzypadkowienia RND — zaobserwujesz ten efekt w kolejnym programie.
10 RANDOMIZE 20 PRINT RND : GO TO 10 |
Otrzymany przez ciebie ciąg liczb nie jest zbytnio losowy, ponieważ
RANDOMIZE wykorzystuje czas od momentu uruchomienia komputera.
Ponieważ niewiele się on zmienia pomiędzy wykonaniami RANDOMIZE, następne
RND robi mniej więcej to samo. Lepszą losowość otrzymasz przez zamianę
Oto program rzucający monety i zliczający liczbę orłów i reszek.
10 LET orly=0: LET reszki=0 20 LET moneta=INT (RND*2) 30 IF moneta=0 THEN orly=orly+1 40 IF moneta=1 THEN reszki=reszki+1 50 PRINT orly;",";reszki, 60 IF reszki<>0 THEN PRINT orly/reszki; 70 PRINT: GO TO 20 |
Stosunek orłów do reszek powinien wynosić w przybliżeniu 1, jeśli wystarczająco długo będziesz rzucał monetą, ponieważ na dłuższą metę oczekuje się równą liczbę orłów i reszek.
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.