Losowanie bez powtórzeń, lotto.

Kiedy losujemy liczbę i liczba może się powtórzyć wtedy taka inicjacja jest prosta do przedstawienia:

Taki zapis pozwoli nam pod zmienną „ZmiennaLosowa” podstawić losową liczbę z przedziału od 1 do 100. Niestety po pewnym czasie korzystania z tego zapisu zauważycie, że jeśli potrzebowaliśmy losowania kilku liczb z jakiegoś małego przedziału, jest duże prawdopodobieństwo, że nasze liczby się powtórzą. Zrobimy dzisiaj program który pokaże wam jak wylosować 6 liczb z 49 czyli tak jak w lotku. Może się to komuś przyda do opracowywania strategi gry w tę grę. Zaczynamy od nowego projektu i rozkładamy 7x textbox, 1x button, 1x listbox, 6x label, tak jak na obrazku:

losowanie_bez_powt

Program nasz będzie losował 6 liczb z 49. Sami będziemy mogli określić jak duża puli liczb ma być i ile tych liczb ma być typowane. Aby liczby nie powtarzały się stworzymy sobie tablice typu „boolean” i wypełnimy ją sobie od 0 do 49 i wypełnimy ją sobie „false”. Co to nam daje. Otóż gdy padnie liczba na określonym numerze tablicy np:3 a jego wartość będzie wynosiła „true” wtedy nie będzie ona dodawana do puli wylosowanych liczb i program będzie liczył dotąd aż wylosuje niepowtarzające się liczby.

Jeśli przyjmiemy, że nasza losowana liczba to będzie „i” nasza tablica będzie wyglądała następująco

tablica(1)=false

tablica(2)=false

tablica(3)=false

(…)

tablica(49)=false

Teraz podczas inicjowania naszego programu losujemy liczbę z przedziału od 1-49 i wylosowaliśmy liczbę „2”. Cyfrę tą wrzucamy do puli liczb wylosowanych a nasza tablica przyjmuje wartości:

tablica(1)=false

tablica(2)=true

tablica(3)=false

(…)

tablica(49)=false

Teraz gdy nasze „i” przyjmie ponownie wartość „2”. Cyfra ta nie zostanie ponownie przyjęta do puli ponieważ w tablicy będzie oznaczona jako „true” i zostanie pominięta.

Program robiony był prze zemnie w Sharpie. Najpierw inicjujemy komponenty:

Teraz tworzymy uchwyt dla naszego przycisku. Program trafione liczby będzie zaznaczał poprzez zmianę koloru textboxa na czerwono dla tego najpierw wyczyścimy sobie kolor naszych textboxów kodem:

Teraz zainicjujemy sobie tablice. Jedną do przechowywania trafionych liczb drugą do przechowywania naszych liczb i trzecią typu „boolean” kontrolną przechowującą „true” i „false”

Teraz wypełniamy sobie naszą tablicę „wylosowane” zmienną „false” od 0 do „max” i zerujemy nasz textbox który wyświetlać nam będzie wylosowane liczby (podczas ponownego losowania aby liczby z poprzedniego losowania nie były dodawane.) i zerujemy listbox który będzie pokazywał nam które liczby dostały wartość „true”

Teraz przechodzimy do głównej pętli która będzie losowała nasze liczby, wygląda on tak:

Warto sobie tą pętle przeanalizować. Teraz musimy dodać tylko:

Jeśli wszystko zrobiliście dobrze powinno to wyglądać jak na filmie:

pełen kod można pobrać tutaj: loser_lotto

Permalink do tego artykułu: https://visualmonsters.cba.pl/losowanie-bez-powtorzen-lotto/

Dodaj komentarz

Twój adres email nie będzie publikowany.