Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2014 mgr
Jerzy Wałaszek
|
Zadanie mieszania, tasowania (ang. shuffle) zawartości tablicy sprowadza się do wykonywania w pętli zamiany miejscami dwóch elementów tablicy o wylosowanych indeksach. Pętla musi być wykonana tyle razy, aby tasowanie objęło wszystkie elementy – w praktyce wystarcza ilość wykonań równa 3n, gdzie n jest ilością elementów.
Algorytm mieszania pseudolosowegoWejście
Wyjście:Tablica Z[ ] z potasowaną zawartością Zmienne pomocnicze
Lista kroków:
|
||||||||||||||||||||||||||||||||||||||||||
Losowanie bez powtórzeńZadanie losowania bez powtórzeń można rozwiązać na kilka różnych sposobów. Jeśli przedział <a,b> jest mały (np. zawiera 80 kolejnych liczb Multi-Lotka), to możemy go odwzorować w tablicy, następnie zawartość tej tablicy potasować poprzednio podanym algorytmem i jako wynik zwrócić pierwsze n elementów. Tasowanie nie dubluje elementów tablicy, zatem otrzymamy n liczb bez powtórzeń. Taki algorytm posiada klasę złożoności obliczeniowej O(n). Jeśli przedział <a,b> jest bardzo duży, a n stosunkowo małe, to postępujemy w sposób następujący. Przygotowujemy pustą tablicę o n elementach. Losujemy liczbę pseudolosową. Jeśli wylosowana liczba jest już w tablicy, to losujemy ponownie dotąd, aż wylosowanej liczby nie będzie w tablicy. Liczbę dopisujemy do tablicy. Jeśli tablica jest zapełniona, kończymy. W przeciwnym razie powtarzamy losowanie. Algorytm w takiej postaci posiada optymistyczną klasę złożoności obliczeniowej O(n2).
Algorytm losowania bez powtórzeńWejście
Wyjście:n różnych od siebie liczb pseudolosowych z przedziału <a,b> Zmienne pomocnicze
Lista kroków:
|
||||||||||||||||||||||||||||||||||||||||||
ĆwiczenieZaprojektuj symulator totolotka. Użytkownik typuje 6 liczb z zakresu od 1 do 49. Następnie program dokonuje losowania 6 liczb z 49 bez powtórzeń i wypisuje, ile liczb trafił użytkownik. Działanie programu zatrzymuje się po trafieniu 6 liczb. Program powinien wtedy wypisać całkowitą liczbę wykonanych losowań. |
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe