Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2 ... 14 15 16 ... 37 38
Wyślij wiadomość do admina

Przewiń wpisy ↓

Unikatowe KOMBINACJE.. od wielu los. oczekujące na min. wypłacalne

2022-06-17 (11:05)

status Lottonauta
Data rejestracji: 2012-09-03
Ilość postów: 3244

13559
wpis nr 1 422 636
[ CZCIONKA MONOSPACE ]

> i7-8650U
myślę, że jak na ten komputero-tablet do internetu, to jest b. dobry wynik.

Pozdrawiam
Weź po uwagę, że jak do środka pętli włożysz jakieś większe obliczenia to włączy się throttling i zegar "pójdzie" w dół.

--- wpis edytowano 2022-06-17 11:08 ---

2022-06-17 (11:20)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 422 639
[ CZCIONKA MONOSPACE ]

"Int jest za krótki.
Daj - unsigned long long"

Sindbad,
Dzięki.

ten unsigned long long to zakres z ogromniastą liczbą Od 0 do 18 446 744 073 709 551 615
więc dlaczego w zwykłej pętli od 1 do 646 492 111 000 wyrzucił mi wartość z minusem ?
...no tak ale to jest stare C uruchamiane przez gcc -o ...

Sindbad,
zaciekawiło mnie Twoje przyśpieszenie przez wątki

Z ciekawości sprawdziłem bez użycia wątków i w Visual Basic uważanym za wolniejszy język od C :

Czas przebiegu while loop od 0 do 205 811 513 765 z krokiem 10
Wynik dla 205 811 513 771 = 42,78 sek 0,71 min
Czas przebiegu while loop od 0 do 205 811 513 765 z krokiem 1
Wynik dla 205 811 513 765 = 423,97 sek 7,07 min

Użyłem wyższych niż 1 kroków w pętli aby szybciej sprawdzić czas i prawidłowość dzialania.

Wracając do wątku poruszonego przez Lottonautę jakoby wygerował 1,65 biliona kombinacji w parę minut to test tylko jednej pętli jest taki:

Czas przebiegu while loop od 0 do 1 646 492 110 120 z krokiem 1000
Wynik dla 1 646 492 111 000 = 4,03 sek 0,07 min
Czas przebiegu while loop od 0 do 1 646 492 110 120 z krokiem 100
Wynik dla 1 646 492 110 200 = 35,52 sek 0,59 min
Czas przebiegu while loop od 0 do 1 646 492 110 120 z krokiem 10
Wynik dla 1 646 492 110 120 = 347,47 sek 5,79 min
Czas przebiegu while loop od 0 do 1 646 492 110 120 z krokiem 1
Wynik dla 1 646 492 110 120 = 3422,97 sek 57,05 min

a przecież mowa jest aż o 10 pętlach ...
dla wygerowania dziesiątek...
2022-06-17 (14:12)

status sindbad
Data rejestracji: 2008-10-13
Ilość postów: 20531

3794
wpis nr 1 422 662
[ CZCIONKA MONOSPACE ]

Cześć

VB na pewno jest wolniejszy.
Pascal obraca jedną pętlę od 1 do 205811513765 w 00:04:25
To samo z ośmioma wątkami robi w 00:06:26

8 wątków zwania mi maszynę o 50%
Jednak wynik końcowy jest lepszy o 500%

I to się nadaje do prasy jak to mówią.

2022-06-18 (01:52)

status sindbad
Data rejestracji: 2008-10-13
Ilość postów: 20531

3794
wpis nr 1 422 745
[ CZCIONKA MONOSPACE ]

MultiTest,

„ten unsigned long long to zakres z ogromniastą liczbą Od 0 do 18 446 744 073 709 551 615
więc dlaczego w zwykłej pętli od 1 do 646 492 111 000 wyrzucił mi wartość z minusem ?”

Użyłeś formatu dla liczby zbyt krótkiej.
printf("ILosc iteracji %i\n", i);

Zmień format na długą liczbę i będzie OK.
printf("ILosc iteracji %lld\n", i);


Pascal ze wstawką w asemblerze od 1 do 205811513765 w 00:04:09

Zainstalowałem CodeBlocks ale wynik słaby 00:06:03

zdjęcie
2022-06-18 (14:33)

status Molek
Data rejestracji: 2005-12-12
Ilość postów: 4801

1497
wpis nr 1 422 815
[ CZCIONKA MONOSPACE ]

Witam
Sindbad,masz pocztę.
Pozdrawiam
2022-06-18 (17:12)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 422 826
[ CZCIONKA MONOSPACE ]

sindbad

Wydawało się że będzie łatwo przeskoczyć na C, ale nie ...
Po pascalu, a jeszcze po basicu gdzie niesamowitą pomocą Visual Studio kod się prawie sam pisze nie spodziewałem się takiej restrykcyjności.
Napiszesz printf z dużej litery i już błąd
dla każdej odmiany typu całkowitego inny format...

No ale może przy wiekszej wprawie będzie krócej ...

Dzięki za pomoc z tym %lld.

Dla takich pętli i procek i kompilalator ma jednak znaczenie.
Żeby sprawdzić różnicę z odkurzyłem laptopa z Intel Core 2

"Zainstalowałem CodeBlocks ale wynik słaby 00:06:03"
a zobacz może to :
https://sourceforge.net/projects/embarcadero-devcpp/

2022-06-18 (22:21)

status sindbad
Data rejestracji: 2008-10-13
Ilość postów: 20531

3794
wpis nr 1 422 859
[ CZCIONKA MONOSPACE ]

Dzięki MultiTest,
Zauważyłem w tym programie nowszy kompilator.
Idąc dalej zainstalowałem sam kompilator GCC 10.3.0.
Wynik obliczeń podobny jak ze wstawką w asemblerze 4:07
C++ może być bardzo przydatne.
W dalszym ciągu to tylko 1/8 tego, co zrobił Lottonauta
2022-06-18 (23:06)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 422 868
[ CZCIONKA MONOSPACE ]

Jak się przyda to OK
Ja też spróbuje coś jeszcze skrócić... innym sposobem.

A co zrobił Lottonauta ?
Kupił sobie super komputer ?
Bedą różnice w lepszych kompilatorach i na szybszych komputerach ale bez przesady ...
Gdzie w wyniku licznik, gdzie czas ?
Nie mówiąc już o prostym kodzie do generowania kombinacji.


2022-06-21 (11:48)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 9361

15220
wpis nr 1 423 220
[ CZCIONKA MONOSPACE ]

MultiTest
Troszkę przerobiłem do przeanalizowania i pod kątem swoich potrzeb. Jakoś alergicznie podchodzę do konsoli. Dodałem tymczasowo kilka okienek ze stanem zmiennych.
Pozdrawiam
zdjęcie
2022-06-21 (21:29)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 9361

15220
wpis nr 1 423 298
[ CZCIONKA MONOSPACE ]

... i jeszcze pętle For-Next w else usunę, bo w tym przypadku jest ona zbędna.
2022-06-21 (23:57)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 423 325
[ CZCIONKA MONOSPACE ]

Jacek_K1961
Dlaczego ?
Zamiast wypisywać po kolei wszystkie Kom(1) , Kom(2)...
nie lepiej tylko msgbox(s);

zdjęcie

Konsola...
Czy nie można się obejść bez formy i przycisków że sobie zaprojektować program do wygrywania ...
Wiele rzeczy na własne potrzeby można zrobić szybciej i prościej bez formy jak się ma tylko dostęp do kodu.

--- wpis edytowano 2022-06-22 00:02 ---

2022-06-22 (08:30)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 9361

15220
wpis nr 1 423 351
[ CZCIONKA MONOSPACE ]

MultiTest.
Tych okienek w ogóle nie będzie są tylko na etapie sprawdzania moich założeń. Mnie zależy tylko na dostępie do zmiennych z kom(). Może jak wszystkie je wywalę to może i w konsoli pójdzie.
Jak pisałem wcześniej mnie zależy na pominięciu tego całego kodowania CSN.
Wiem, że to czym się bawię dotyczy tylko jednego przypadku, chociaż i z tym da się radę coś wykombinować.
Pozdrawiam

--- wpis edytowano 2022-06-22 08:30 ---

2022-06-22 (10:03)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 423 354
[ CZCIONKA MONOSPACE ]

"Jak pisałem wcześniej mnie zależy na pominięciu tego całego kodowania CSN...""

Jacek_K1961

Ten program jest tylko odpowiedzią na sposób wygenerowania wszystkich kombinacji
"szóstek" multi z jednego losowania, więc zapisuje kolejno w tablicy kom, "szóstki" (albo inne kombinacje od 1 do 10 ) tworzone z liczb kolejnego losowania.

Jeżeli mają być inne kombinacje "parki", "piątki" czy "dziesiątki" to wystarczy tylko w linii k=6
usunąć 6 dopisać odpowiednio 2,5,czy 10 - w trybie konsoli to nie wymaga to dodawania okienek edycyjnych czy list.

Jeżeli "szóstka" została utworzona program przechodzi do do Else i tu pytanie co chcemy teraz
z tą kolejną "szóstką" zrobić ?
- można ją wyświetlić na ekranie lub zapisać albo jedno i drugie.
- można numerować kolejno
csn pozwala nam zidentyfikować zapisaną szóstkę po jej numerze, jeżeli tego potrzebujemy.
Jak nie sposób dostępnym algorytmem csn (np. patrz link 777ch) to czym ?
Można też próbować na inne sposoby ale cel jest taki sam - szybkie i jednoznaczne odwołanie się do właściwej komórki pamięci.

Pozdrawiam
2022-06-22 (12:59)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
wpis nr 1 423 380
[ CZCIONKA MONOSPACE ]

hejka

MultiTest napisał :

cyt:"...csn pozwala nam zidentyfikować zapisaną szóstkę po jej numerze,
jeżeli tego potrzebujemy.
Jak nie sposób dostępnym algorytmem csn (np. patrz link 777ch)
to czym ?
Można też próbować na inne sposoby ale cel jest taki sam
- szybkie i jednoznaczne odwołanie się do właściwej komórki pamięci."


To --> kwintesencja......zasadnicza kwestia czyli zwyczajnie -->"grunt".




Właściwa komórka pamięci zapamięta .
-->TO CO TAM WPISZEMY.

Oczywiście nasza pamięć jest --> obszarem ograniczonym,
i dlatego w zależności od potrzebnej nam informacji zwrotnej !!!,
trzeba zdecydować jaki --> MODEL Pamięci
jest nam potrzebny ...............

http://cc.etsii.ull.es/ftp/antiguo/MTDPRG1/freepascal/manual/prog/node10.html#SECTION001010000000000000000

2022-06-22 (16:29)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 9361

15220
wpis nr 1 423 396
[ CZCIONKA MONOSPACE ]

Jak już pisałem, ubzdurałem sobie, że liczby będą jednocześnie adresem w tablicy 300500200. Być może ten kod CSN jest lepszy, ale chcę to sprawdzić.
2022-06-22 (23:06)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 423 481
[ CZCIONKA MONOSPACE ]

ubzdurałem sobie, że liczby będą jednocześnie adresem w tablicy...

Jacek_K1961,

Niekoniecznie
Jeżeli do tablicy 1..80 będą zapisywane wylosowane liczby od 1 do 80 pod warunkiem że liczbę zapisuje się pod takim samym numerem komórki tablicy można by powiedzieć że liczby będą jednocześnie adresem, bo zaglądając do komórki z numerem 1 znajdziemy tam liczbę 1 zaglądając do komórki z adresem na przykład 70 znajdziemy tam liczbę 70.

W innym przypadku może być jak w tej piosence “ Czy tutaj mieszka panna Agnieszka ?”
Panna Agnieszka ma swój adres, skąd mamy wiedzieć że numer 70 jest adresem pani Agnieszki ?


W programowaniu adres wskazuje na zawartość komórki pamięci,
Można zapisać to jako kolejne zmienne tak:
Kombinacja pierwsza =” 1 2 3 4 5 6”
Kombinacja druga =” 1 2 3 4 5 7”
Kombinacja trzecia = “ 1 2 3 4 5 8”
itd.
albo automatycznie numerować komórki używając tablicy
Tab(1) zawiera 1 2 3 4 5 6
Tab (3) zawiera 1,2,3,4,5.8
itd.
Podając w programie nazwę zmiennej lub wskazując na numer pozycji w tablicy ( czyli indeks) uzyskamy zawartość konkretnej komórki 3 czyli np. 1 2 3 4 5 8

Gdyby używać bezpośrednio tablicy kom to liczby z niej trzeba byłoby zapisywać w
tablicy dwuwymiarowej
i tak dla pierwszej kombinacji
tab(1,1) = 1
tab (1,2) = 2
tab (1,3) = 3
tab(1,4) = 4
Tab(1,5) = 5
Tab (1,6) =6

a dla drugiej kombinacji prawie tak samo za wyjątkiem ostatniej pozycji
Tab (1,6) =7

Ok. Ale czy będziemy widzieć co jest pod adresem tab(300500) albo tab (300500,6) ?
Szukając rozwiązania możemy spróbować nadawać własne jednoznacznie identyfikujące adresy tak jak w tablicach asocjacyjnych.
Czy też tylko pozostaje obliczyć na nowo kombinację dla wybranej pozycji ?

Pozdrawiam


2022-06-22 (23:09)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 423 483
[ CZCIONKA MONOSPACE ]

"ubzdurałem sobie, że liczby będą jednocześnie adresem w tablicy..."

Jacek_K1961,

Niekoniecznie
Jeżeli do tablicy 1..80 będą zapisywane wylosowane liczby od 1 do 80 pod warunkiem że liczbę zapisuje się pod takim samym numerem komórki tablicy można by powiedzieć że liczby będą jednocześnie adresem, bo zaglądając do komórki z numerem 1 znajdziemy tam liczbę 1 zaglądając do komórki z adresem na przykład 70 znajdziemy tam liczbę 70.

W innym przypadku może być jak w tej piosence “ Czy tutaj mieszka panna Agnieszka ?”
Panna Agnieszka ma swój adres, skąd mamy wiedzieć że jakiś numer 70 jest adresem pani Agnieszki ?

I żeby wiedzieć iż mówimy o tym samym...

W programowaniu adres wskazuje na zawartość komórki pamięci,
Można zapisać to jako kolejne zmienne tak:
Kombinacja pierwsza =” 1 2 3 4 5 6”
Kombinacja druga =” 1 2 3 4 5 7”
Kombinacja trzecia = “ 1 2 3 4 5 8”
itd.
albo automatycznie numerować komórki używając tablicy
Tab(1) zawiera 1 2 3 4 5 6
Tab (3) zawiera 1,2,3,4,5.8
itd.
Podając w programie nazwę zmiennej lub wskazując na numer pozycji w tablicy ( czyli indeks) uzyskamy zawartość konkretnej komórki 3 czyli np. 1 2 3 4 5 8

Gdyby używać bezpośrednio tablicy kom to liczby z niej trzeba byłoby zapisywać w
tablicy dwuwymiarowej
i tak dla pierwszej kombinacji
tab(1,1) = 1
tab (1,2) = 2
tab (1,3) = 3
tab(1,4) = 4
Tab(1,5) = 5
Tab (1,6) =6

a dla drugiej kombinacji prawie tak samo za wyjątkiem ostatniej pozycji
Tab (1,6) =7

Ok. Ale czy będziemy widzieć co jest pod adresem tab(300500) albo tab (300500,6) ?
Szukając rozwiązania możemy spróbować nadawać własne jednoznacznie identyfikujące adresy tak jak w tablicach asocjacyjnych.
Czy też tylko pozostaje obliczyć na nowo kombinację dla wybranej pozycji ?
Zdekodować ?

Pozdrawiam

--- wpis edytowano 2022-06-22 23:23 ---

2022-06-23 (15:42)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 9361

15220
wpis nr 1 423 552
[ CZCIONKA MONOSPACE ]

... a jednak znalazłem te zakłady, co to lotek mówił, że pudło, a wysłalem ich kilka. Po dodzwonieniu pan z infolinii powiedział, że mieli awarię i po kilku dniach wygrane się pojawią na koncie. Tak, że ludziska sprawdzajcie !!! zdjęcie
zdjęcie
2022-06-24 (12:16)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 423 671
[ CZCIONKA MONOSPACE ]

Ta "awaria" ma cały czas ten sam przebieg i też była w poprzedniej wersji.
2022-06-24 (13:05)

status MultiTest
Data rejestracji: 2020-08-05
Ilość postów: 5927

16235
wpis nr 1 423 682
[ CZCIONKA MONOSPACE ]

Jacek_K1961,
Czy nie lepiej wykorzystać sprawdzone rozwiązanie a potem ewentualnie zmieniać ?
Szybciej też i łatwiej rozwiązać ten problem na małej tablicy a spróbujmy po Twojemu.

Robisz DIM Tab6
i tak to zostaje zapisane:

tab6(0)=0
tab6(1)=0
tab6(2)=0
tab6(3)=0
...
tab6(300500199)=0
tab6(300500200)=0

Jeżeli wygerujesz pierwszą szóstkę, w kolejności powstawania to najbardziej intuicyjne wydaje się zapisane jej wystąpienia po nr 1
drugą szóstkę pod numerem 2 i ostatnią pod numerem 300500200

Problem że z wygerowanej szóstki z danego losowania nie wynika wcale jej numer.
Może być każdy z zakresu od 1 do 300500200

Zastosowane rozwiązanie jest takie że zapisuje się "szóstkę" z tablicy w całości do stringa a algorytm CSN ustala jaki jest jej numer w kolejności powstawania

a potem taki zapis tab(numer_Csn)=true jak podał 777ch

albo tab(numer_Csn)=tab(numer_CSN)+1;

Ten drugi sposób nie tylko sygnalizuje wystąpienie wylosowanej szóstki ale także także
przy okazji , ile razy występuje.
Po przejściu losowań w tablicy może być taki zapis

tab6(0)=0
tab6(1)=0
tab6(2)=3
tab6(3)=1
...
tab6(300500199)=7
tab6(300500200)=0

Na koniec przechodzisz pętlą tablicę z zapisami sprawdzając co jest zapisane
pod adresem tab6(1)...Tab6(2)...
i ci wyświetla że pod tab6 jest true albo z metody 2 wartość= 3
i wiesz tylko dotyczy że dotyczy to szóstki z nr 2 - bo na to wskazuje nr indeksu
więc znowu drugi algorytm dekoduje ten numer na tekst w tym przypadku "1,2,3,4,5,7"

Można sobie prześledzisz jak działa taki dekoder - masz tu gotowy skrypt w najnowszym basica według autorstwa Iona Saliu.

--- wpis edytowano 2022-06-24 13:06 ---

| Dodaj wpis w tym temacie | Spis tematów | Wyniki lottoStrona: 1 2 ... 14 15 16 ... 37 38
Wyślij wiadomość do admina