Jestem początkującym programistą (programuje w C) i mam za zadanie zrobić projekt -losowanie Lotto. Mój problem zaczyna się w momencie kiedy mam losować 6 liczb z pośród puli. Nie mam pojęcia w jaki sposób losowo wybrać 6 liczb i jak je porównać z wcześniej wpisanymi przez siebie liczbami. Aktualnie uczę się z książki Stephena Praty, ale potrzebuje kilka wskazówek od Was. Ewentualnie jakiegoś kodu w C lub ‘pseudokodu’, żebym mógł sobie przeanalizować i zrozumieć jak ma wyglądać ten program. Kodu nie umieszczam ponieważ nie ma go zbyt wiele, a chodzi mi w sumie o jakieś losowanie oraz porównanie na najprostszych przykładach.
Zapoznaj się z tematem i popraw tytuł tematu na konkretny, mówiący o problemie. W celu dokonania zaleconej korekty proszę użyć przycisku Edytuj przy poście otwierającym ten temat.
Zignorowanie zalecenia będzie skutkowało usunięciem tematu do Kosza.
Jeśli chcesz wylosować 6 liczb z N (nie wiem ile wynosi N w lotto) to pierwsze co przychodzi mi do głowy to takie rozwiązanie (właściwie bezpośrednio oddające jak w rzeczywistości to losowanie się odbywa): robisz tablicę tych wartości, z których chcesz losować. Następnie za pomocą rand i przekształceń matematycznych (w linku) losujesz indeks z tablicy, wyznaczający która wartość będzie “wylosowana”. Indeks ma wartości z zakresu 0 … N-1. Następnie tak wylosowaną wartość “usuwasz” z tablicy, następnie losujesz indeks z zakresu 0 … N-2 itd… tyle raz ile chcesz. Przy czym usunięcie to zwyczajnie zamiana wylosowanego elementu z ostatnim w tablicy i traktowanie tej tablicy jako o jeden element mniejszą w następnym losowaniu.
Hmm zadeklaruj biblioteke time.h, stdlib.h,stdio.h. nie pamiętam która odpowiada za srand-dzięki temu będziesz miał bardziej pseudolosowe liczby . punkt startowy do randa będzie się zmieniał za każdym razem, więc będziesz dostawał inny ciąg liczb.
z tego co pamiętam, żeby losować całkowite liczby od 1 do 46 musisz użyć modulo, czyli zapisać to tak: x=rand()%47.
Nie wiem czy w C dokładnie będzie działać tak jak w linku, ale gdy zapiszesz
to tak:
int zarodek;
zarodek=time(NULL);
srand(zarodek);
to na pewno zadziała/
Co do porównywania, to możesz rzeczywiście posortować i porównać obie tablice, ale nie wiem czy warto przy tak małych tablicach. zawsze się czegoś nauczysz.
Nie wiem czy działa, pisane na szybko w notatniku nie mam pod ręką nic do kompilacji akurat. spróbuj pójść w tę stronę.
http://wklej.org/id/760729/ -pamiętaj żeby zadeklarować funkcję! i to tak, żeby szukaj było przed losowanie, unikniesz problemów wtedy-
Jak chciałbyś podłubać i posortować je to trzymaj-daawno temu to naskrobałem, sortowanie kubełkowe-