Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 ... 7 8 9 ... 18 19 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | C++ od niechcenia |
2018-06-03 (11:46) grem10 Data rejestracji: 2018-06-03 00:00:00 Ilość postów: 13 | wpis nr 1 171 074 [ CZCIONKA MONOSPACE ] Nie wiem czy to pomoże, ja w tym swoim nowym C++buiderze zrobiłem tak: utworzyłem nowy projekt -> New -> VCL Forms Appliction, zamknąłem projekt a następnie skopiowałem do tego nowego folderu 4 pliki (te od sindbada) project1(.cpp), unit1(.cpp),unit1(.h) oraz unit1(.dfm) czyli podmieniłem, po ponownym otwarciu mogłem uruchomić program (F9) z sukcesem. |
2018-06-03 (13:34) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 171 086 [ CZCIONKA MONOSPACE ] MLRandom, uruchom B6. Na samym dole wklej to, co odnosi się do generatora. //-------------------- generator ------------------------------ typedef unsigned long long ulong; unsigned int MT[624]; int mti = 0; // Inicjuje MT[] //-------------- void InicjujMT(unsigned int x0) { ulong x; MT[0] = x0; for(int i = 1; i < 623; i++) { x = MT[i-1]; x = (23023 * x) & 0xffffffffull; x = ( 3 * x) & 0xffffffffull; MT[i] = x; } } // Inicjuje MT wartościami losowymi //--------------------------------- void UprzypadkowijMT() { InicjujMT((unsigned int)time(NULL)); } // Generator Mersenne Twister //-------------------------- unsigned int MersenneTwister() { const unsigned int MA[] = {0,0x9908b0df}; long int y; int i1,i397; i1 = mti + 1; if( i1 > 623) i1 = 0; i397 = mti + 397; if(i397 > 623) i397 -= 624; y = (MT[mti] & 0x80000000) | (MT[i1] & 0x7fffffff); MT[mti] = MT[i397] ^ (y >> 1) ^ MA[y & 1]; y = MT[mti]; y ^= y >> 11; y ^= (y << 7) & 0x9d2c5680; y ^= (y << 15) & 0xefc60000; y ^= y >> 18; mti = i1; return y; } //-------------------- generator ------------------------------ Uruchom program czy nie ma błędu. Na formę wrzuć komponent memo i button. Klikasz 2 razy na button i otworzy się. void __fastcall TForm1::Button1Click(TObject *Sender) { } Miedzy klamry wkleisz kod liczący. //-------------------- kod liczący -------------------------------- int a,b,c,d,v = 0; UprzypadkowijMT(); b = (MersenneTwister() % (6)) +1; //850668 c = (MersenneTwister() % (6)) +1; d = (MersenneTwister() % (6)) +1; Memo1->Clear(); Memo1->Lines->Add(Format("%d", ARRAYOFCONST((b)))); Memo1->Lines->Add(Format("%d", ARRAYOFCONST((c)))); Memo1->Lines->Add(Format("%d", ARRAYOFCONST((d)))); do { v++; a=b; b=c; c=d; d = (MersenneTwister() % (6)) +1; Memo1->Lines->Add(Format("%d", ARRAYOFCONST((d)))); } while (a!=1 || b!=4 || c!=6); Memo1->Lines->Add(Format("%d. %d", ARRAYOFCONST((v+3,d)))); Memo1->Lines->Add("Koniec"); //-------------------- kod liczący -------------------------------- Z ustawieniami położenia Memo1 i Button1 nie będziesz miał problemu. Jeśli jednak takowy nastąpi to pisz. Polecam: https://youtu.be/9hkr75oC0uc |
2018-06-03 (14:05) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 093 [ CZCIONKA MONOSPACE ] ufff, udało się Otworzyłem notatnikiem Project1, poprawiłem linię na: <packages value="vcl.bpi rtl.bpi vclx.bpi bcbsmp.bpi dclocx.bpi dclusr.bpi" /> czyli usunąłem dclusr.bpi i lndy60.bpi ... i działa Ufff, OK, pierwszy krok zrobiony |
2018-06-03 (14:21) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 096 [ CZCIONKA MONOSPACE ] OK, szuka 3 kolejnych liczb w układzie 1-4-6, podając czwartą. Jak to prosto przerobić, by szukał układu a-2, b-2, c-2, d-2, e-2, a-1, b-1,c-1, d-1, e-1, a, b, c, d, e (3 ostatnie wyniki mini lotto) i podawał czwarta linię; a+1, b+1, c+1, d+1, e+1? Wystarczy modyfikacja poniższej części kodu? : do { v++; a=b; b=c; c=d; d = (MersenneTwister() % (6)) +1; Memo1->Lines->Add(Format("%d", ARRAYOFCONST((d)))); } while (a!=1 || b!=4 || c!=6); Memo1->Lines->Add(Format("%d. %d", ARRAYOFCONST((v+3,d)))); Czy należy zaingerować głębiej? |
2018-06-03 (16:14) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 171 113 [ CZCIONKA MONOSPACE ] OK, szuka 3 kolejnych liczb w układzie 1-4-6, podając czwartą. Program działa na numerach kombinacji (CSN). W aktualnym kodzie mamy porównanie trzech losowań do sekwencji losowanej z podaniem następnego ogniwa. a,b,c - sekwencja do sprawdzenia 1,4,6 - 3 losowania d - kolejne ogniwo --- wpis edytowano 2018-06-03 16:20 --- |
2018-06-03 (17:13) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4907 | wpis nr 1 171 120 [ CZCIONKA MONOSPACE ] sindbad napisałeś" cyt."Zapomniałem dodać przewijanie" Czy takie przewijanie można dodać do aplikacji tworzonej w CodeBlocks ? Wyszukując najdłuższe onty w programach wyświetlanych w okienkach cmd czasami spotykałem się z tym, że program nie wyświetlał wszystkich danych. Wygląda to tak jakby w okienku brakowało miejsca dla wyświetlenia wszystkich danych policzonych przez program albo brakowało paska przesuwającego dane w pionie. |
2018-06-03 (17:57) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 171 126 [ CZCIONKA MONOSPACE ] Czy takie przewijanie można dodać do aplikacji tworzonej w CodeBlocks ? Nie. |
2018-06-03 (19:50) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 153 [ CZCIONKA MONOSPACE ] Sindbad, dzięki. OK, działa - wystarczyło podstawić zamiast liczby 6 inną liczbę (np. liczbę kodów CSN). Rozumiem, że aby szybciej działał ten program to trzeba go skompilować? |
2018-06-03 (20:25) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 171 159 [ CZCIONKA MONOSPACE ] Jeśli uruchomiłeś program w B6, to zostaje on skompilowany automatycznie. Z szansą trafienia jak 1:615 574 028 169 277 700 masz nikłe szanse trafienia. Jakbyś nawet trafił to i tak szansa, że trafi się kolejne ogniwo z losowania jest bardzo mała. --- wpis edytowano 2018-06-03 20:26 --- |
2018-06-03 (20:56) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 165 [ CZCIONKA MONOSPACE ] Hmm...Skompilowany? To mnie jakoś nie pocieszyłeś, bo ... działa wolniej niż moja "zabawka" w VBA 2,5 mln kombinacji liczył tyle co w VBA 7-10 mln Fakt, że tam nie robię weryfikacji po kodach CSN, a po sumach liczb (wstępna weryfikacja, potem szczegółowo gdy sumy się zgadzają), ale ... tu jakoś wolno. Można to jakoś przyśpieszyć? |
2018-06-03 (21:04) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 166 [ CZCIONKA MONOSPACE ] Chyba wiem, gdzie jest "złodziej czasu". W VBA korzystam z zewnętrznego źródła danych losowych (paczki po 1 mln zakładów z generatora Amadeusa) a tu program sam sobie musi generować każdą liczbę, tj. "obrabiać ją", a to czasochłonne. A można zassać dane z zewnętrznego źródła (uruchomić generator, wczytać plik tekstowy)? Chyba, że nie tu leży problem? --- wpis edytowano 2018-06-03 21:06 --- |
2018-06-03 (21:16) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 171 168 [ CZCIONKA MONOSPACE ] 2,5 mln kombinacji liczył tyle co w VBA 7-10 mln To ciekawe, bo mi liczy 2,5 mln w ułamku sekundy. Podejrzewam, że dłużej trwa wydrukowanie pierwszych trzech kombinacji. Sprawdziłem - 1 miliard to 27 sekund. --- wpis edytowano 2018-06-03 21:22 --- |
2018-06-03 (21:29) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 173 [ CZCIONKA MONOSPACE ] To teraz mi zabiłeś ćwieka U mnie to były minuty, długie minuty. Zmieniłem liczbę 6 na 100 i podmieniłem szukaną trójkę na liczby dwucyfrowe. Ze 2 kawy byś zdążył wypić. Hmmm... coś jest nie tak. Muszę to ponownie sprawdzić. Czy ta liczba na końcu (wynik po czwartej liczbie - prognozie) to liczba wygenerowanych liczb losowych (kodów CSN)? --- wpis edytowano 2018-06-03 21:32 --- |
2018-06-03 (21:43) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 171 179 [ CZCIONKA MONOSPACE ] Czy ta liczba na końcu (wynik po czwartej liczbie - prognozie) to liczba wygenerowanych liczb losowych (kodów CSN)? Tak to długość łańcucha i jeszcze raz pokazana czwarta liczba. Myślę, że wyłączyłeś drukowanie. .. d = (MersenneTwister() % (6)) +1; // Memo1->Lines->Add(Format("%d", ARRAYOFCONST((d)))); .. Jeszcze raz przypomnę: Z szansą trafienia jak 1:615 574 028 169 277 700 masz nikłe szanse trafienia. Możesz policzyć jak długo powinien pracować komputer. Tak do września powinien trafić hej! --- wpis edytowano 2018-06-03 21:51 --- |
2018-06-03 (21:50) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 182 [ CZCIONKA MONOSPACE ] Jak kliknąłem 'Licz' to w formatce ("Memory") cały czas leciał mi łańcuch liczb. Leciał, leciał ... i leciał Aż do 2,5 mln, gdy trafił |
2018-06-03 (21:53) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 171 189 [ CZCIONKA MONOSPACE ] Drukowanie bardzo spowalnia cały proces. Wyłącz drukowanie i ciesz się szybkością działania. .. d = (MersenneTwister() % (6)) +1; // Memo1->Lines->Add(Format("%d", ARRAYOFCONST((d)))); .. --- wpis edytowano 2018-06-03 21:54 --- |
2018-06-03 (22:05) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 198 [ CZCIONKA MONOSPACE ] No fakt, po korekcie milionik to mrugnięcie okiem, dwa też Tylko za każdym razem drukuje mi 3 różne liczby, inne od tych szukanych. Trochę muszę się pobawić by to porozgryzać, ale ... SZYBKOŚĆ JEST PORAŻAJĄCA! Sindbad, dzięki. |
2018-06-03 (22:16) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 205 [ CZCIONKA MONOSPACE ] OK, już wiem - to 3 pierwsze wygenerowane liczby a, b i c. Potem suma (ilość liczb losowych) i d (4 liczba - prognoza). Jasne. Jeszcze raz dzięki. |
2018-06-03 (22:17) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 171 206 [ CZCIONKA MONOSPACE ] To są pierwsze trzy liczby w łańcuchu. Można to wyłączyć. .. Memo1->Clear(); //Memo1->Lines->Add(Format("%d", ARRAYOFCONST((b)))); //Memo1->Lines->Add(Format("%d", ARRAYOFCONST((c)))); //Memo1->Lines->Add(Format("%d", ARRAYOFCONST((d)))); do { .. Zmienić drukowanie na końcu. .. hile (a!=1 || b!=4 || c!=6); Memo1->Lines->Add(Format("%d. %d %d %d %d", ARRAYOFCONST((v+3,a,b,c,d)))); Memo1->Lines->Add("Koniec"); .. |
2018-06-03 (22:24) MLRandom Data rejestracji: 2016-01-16 00:00:00 Ilość postów: 553 | wpis nr 1 171 209 [ CZCIONKA MONOSPACE ] Sindbad, szczęka mi opadła 400 mln liczy w 2-3 sekundy! Dzięki! To jest zabawka, to rozumiem |
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 ... 7 8 9 ... 18 19 Wyślij wiadomość do admina |