Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2 ... 7 8 9 ... 18 19
Wyślij wiadomość do admina

Przewiń wpisy ↓

C++ od niechcenia

2018-06-03 (11:46)

status grem10
Data rejestracji: 2018-06-03 00:00:00
Ilość postów: 13

15716
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)

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

3794
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-&gt;Clear();



Memo1-&gt;Lines-&gt;Add(Format("%d", ARRAYOFCONST((b))));

Memo1-&gt;Lines-&gt;Add(Format("%d", ARRAYOFCONST((c))));

Memo1-&gt;Lines-&gt;Add(Format("%d", ARRAYOFCONST((d))));



do

{

v++;



a=b;

b=c;

c=d;



d = (MersenneTwister() % (6)) +1;



Memo1-&gt;Lines-&gt;Add(Format("%d", ARRAYOFCONST((d))));



}

while (a!=1 || b!=4 || c!=6);



Memo1-&gt;Lines-&gt;Add(Format("%d. %d", ARRAYOFCONST((v+3,d))));



Memo1-&gt;Lines-&gt;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)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

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

3794
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)

status kleszek
Data rejestracji: 2006-05-27 00:00:00
Ilość postów: 4907

2047
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)

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

3794
wpis nr 1 171 126
[ CZCIONKA MONOSPACE ]

Czy takie przewijanie można dodać do aplikacji tworzonej w CodeBlocks ?



Nie.
2018-06-03 (19:50)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

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

3794
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)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

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

3794
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)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

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

3794
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)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

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

3794
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)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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)

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

3794
wpis nr 1 171 206
[ CZCIONKA MONOSPACE ]

To są pierwsze trzy liczby w łańcuchu.



Można to wyłączyć.



..



Memo1-&gt;Clear();



//Memo1-&gt;Lines-&gt;Add(Format("%d", ARRAYOFCONST((b))));

//Memo1-&gt;Lines-&gt;Add(Format("%d", ARRAYOFCONST((c))));

//Memo1-&gt;Lines-&gt;Add(Format("%d", ARRAYOFCONST((d))));



do

{



..





Zmienić drukowanie na końcu.



..



hile (a!=1 || b!=4 || c!=6);



Memo1-&gt;Lines-&gt;Add(Format("%d. %d %d %d %d", ARRAYOFCONST((v+3,a,b,c,d))));



Memo1-&gt;Lines-&gt;Add("Koniec");



..

2018-06-03 (22:24)

status MLRandom
Data rejestracji: 2016-01-16 00:00:00
Ilość postów: 553

14699
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 lottoStrona: 1 2 ... 7 8 9 ... 18 19
Wyślij wiadomość do admina