[C] Program losujący liczby nie działa

Witam :slight_smile:

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.

Pozdrawiam

Druii ,

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.

@Druii

C ma standardowo tylko funkcję rand: http://pl.wikibooks.org/wiki/C/rand

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.

http://cplusplus.com/reference/clibrary/cstdlib/srand/

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 :stuck_out_tongue: 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-

http://wklej.org/id/760725/

nu, to pozdro. powodzenia w rozgryzaniu :slight_smile: