Teoretyczne losowanie dużego lotka:)

0

Witam,
Przed chwilą naszła mnie taka myśl..
Załóżmy że, lotek jest ustawiany i po skończeniu obstawiania komputer liczy jakie numery nie zostały obstawione. Jakim algorytmem wy byście to napisali i jak myślicie ile czasu potrzebowałby na to domowy komputer?

0

Przecież w tzw. "Dużym Lotku" (czyli dzisiaj "Lotto") jest tylko niecałe 14 milionów kombinacji liczb. Dla komputera to kaszka z mleczkiem. Nawet jeśli zakodujemy to zupełnie naiwnie. Można bez problemu zrobić tablicę booleanów (byte'ów, intów...) o takim rozmiarze, tj. mielibyśmy jedną komórkę dla każdej z kombinacji. Potem można lecieć wszystkie kupony (każdy kupon to wybór jednej kombinacji z owych 14 milionów) i dla kupony z kombinacją K odhaczyć K-tą kombinację w tablicy. Taki przelot ma złożoność liniową. Potem wystarczy zrobić drugi przelot -- również liniowy -- aż do pierwszej nieodhaczonej komórki. Ona (jeśli takowa istnieje) będzie reprezentowała kombinację, której nikt nie skreślił. Czyli dalej złożoność liniowa, O(n). Współczesny komputer nawet się nie spoci dla n=14 mln. Kilka chwil i mamy wynik.

0

Nio właśnie zastanawiam się czy utworzyć taką tablice to kaszka z mleczkiem dla komputera i jak ją rozsądnie utworzyć..

0

14mln dla jakiejś bazy danych to Pikuś, pan Pikuś. Nie takie bazy danych się robi.

0

Ale powiedźcie mi jak byście stworzyli tą bazę z wszystkimi kombinacjami? Jak już raz się ją stworzy to będzie, ale wydaje mi się, że stworzenie pliku txt z takimi kombinacjami potrwało by kilka/kilkanaście godzin.

0

Ale powiedźcie mi jak byście stworzyli tą bazę z wszystkimi kombinacjami? Jak już raz się ją stworzy to będzie, ale wydaje mi się, że stworzenie pliku txt z takimi kombinacjami potrwało by kilka/kilkanaście godzin.

0

Dla bazy danych 14 mln to niewiele. Ale i dla pamięci. Tablica bajtów dałaby 14 MB. Szału nie robi. Jak na aplikacyjkę, która ma zostać odpalona raz, to nawet nie opłaca się kombinować z pakowaniem tego do bitów (w końcu wystarczy flaga było/nie było), co zmniejszyłoby rozmiar tablicy do mniej niż 2 MB ;).

Nie, nie trwałoby godzin.

Ja pewnie w ogóle nie tworzyłbym wypisu wszystkich kombinacji. Pierwsze, co mi przychodzi do głowy (z kapelusza) to napisanie funkcji, która odwzoruje wartość -- liczbę całkowitą -- z zakresu od 1 do 14 mln na kombinację liczb (tudzież vice versa). Funkcja po prostu numerowałaby/indeksowałaby kombinacje, czyli skreślenia. Np. indeks i=0 oznaczałaby kombinację K=(1, 2, 3, 4, 5, 6). Indeks i=1 kombinację K=(1, 2, 3, 4, 5, 7), indeks i=2 skreślenie K=(1, 2, 3, 4, 5, 8) i tak dalej.

Odczytując poszczególne kupony, transformowałbym kombinację K na indeks i. Indeks i byłby oczywiście indeksem w mojej tablicy. Potem by mi wyszło, że dla i=1500666 w tablicy mam "false". Żeby mój program wyświetlił co to za kombinacja liczb, musiałbym dokonać transformacji odwrotnej: indeksu i na kombinację K.

0

hmm, teraz wydaje mi się to rozsądniejsze.. Zobaczę z ciekawości ile mi zajmie wygenerowanie wszystkich kombinacji do pliku txt.

0

Hmm, chyba za dużo mi się wydawało.. Niezbyt szybkim algorytmem potrwało to parę minut, zaraz zmierzę to jeszcze raz za pomocą ctime, a plik ważył troszkę ponad 250MB.

0

Stworzenie pliku Marne 871 sekund na procku x2 1.6

0

a na co mi plik? przecie żeby lotto działało terminale muszą łączyć się z centralą i stąd centrala cały czas wie wszystko

0

Większą trudność przy ustawianiu lotka sprawiałoby:
a) policzenie dla jakiego wyniku losowania łączna suma nagród jest najmniejsza,
b) znalezienie innego, realistycznie wyglądającego wyniku, dającego łączną sumę nagród bliską minimum, jeżeli z a) wyniknie np. 3,4,5,6,7,8,
c) "ustawienie" maszyny losującej.

0

qrwk to zastanawia mnie jak Ty to napisałeś..

0

to zbyt dobry interes, by mógł paść choć cień podejrzenia, ale z drugiej strony - znając naturę ludzką....
a że ludzie wierzą w "systemy" i to że piłeczki są pamiętliwe to inna historia

o przypomniało mnie mi się coś ciekawego
znany jest system :-) 162 zakładów gwarantujących trójkę, to na razie rekord świata i chyba nawet nie udowodniono, że możliwy jest krótszy zestaw. Kombinowałem z tym trochę ale nie wskórałem wiele.

0
Kopernik napisał(a)

Ale powiedźcie mi jak byście stworzyli tą bazę z wszystkimi kombinacjami? Jak już raz się ją stworzy to będzie, ale wydaje mi się, że stworzenie pliku txt z takimi kombinacjami potrwało by kilka/kilkanaście godzin.

No tak nie do końca:

[hauleth@NIUNIOBOOK ~]$ time seq 1 14000000 > test.txt

real	0m11.132s
user	0m10.609s
sys	0m0.257s

1 użytkowników online, w tym zalogowanych: 0, gości: 1