Totolotek

0

Czy ktoś zna procedurę, która wyliczy wszystkie kombinacje w TotoLotka?

Procedure , którą sam napisałem, jest cholernie wolna. Potrzebuję czegoś szybkiego.

Na forum szukałem i nie znalazłem!

0

Mnie sie wydaje że 48^7 czyli: 587068342272

0

Mnie sie wydaje że 48^7 czyli: 587068342272

Przesadziłeś :) To jest tylko:

49!/42!/7! = 49484746454443/7/6/5/4/3/2 - podstawy kombinatoryki :)

0

Ale chodzi mi o kombinacje np. 6 36 21 41 12 .

0

Program wyznaczający wszystkie kombinacje działa w czasie n! czyli 49! - daruj sobie.

0

nie wiem czy cie dobrzez zrouzmialem ale moze to?:
var
x:integer;
begin
x:=random(47);

if x=0 then label1.caption:='1';
//itp.
o to chodzi?

0

Przesadziłeś :) To jest tylko:

49!/42!/7! = 49484746454443/7/6/5/4/3/2 - podstawy kombinatoryki :)

Mała pomyłka. 49 piłeczek. Losujemy 6.
Czyli:
49!/(6!43!)=303996 (jakoś strasznie mało [stuk] )

A co do kodu, to najszybsze co mi się udało zrobić to:

procedure TForm1.Button1Click(Sender: TObject);
procedure Toto(Wylosowane: TZbior; LiczbaEl, k: Byte);
var
i: Byte;
Ciag: string;
begin
if LiczbaEl >= 6 then
begin
Ciag := '';
for i := 1 to 49 do
if i in Wylosowane then
Ciag := Ciag + ' ' + IntToStr(i);
ListBox1.Items.Add(Ciag);
end
else
begin
for i := k to 49 do
if not (i in Wylosowane) then
Toto(Wylosowane+[i], LiczbaEl+1, i);
end;
end;

begin
Toto([], 0, 1);
end;

Przynajmniej nigdy się nie powtarzają. Ale i tak troszkę za długo.

0

Mała pomyłka. 49 piłeczek. Losujemy 6.

Myślałem, że 7...

0

Dzięki, ale rzeczywiście nie jest to za szybka procedura.

0

na tej stronie jest taki program ktory robi plik txt ze wszystkimi kombinacjami. Sciągnij go i przejzyj kod zrodlowy :-)

0

Czy ktoś ma jakiś szybszy algorytm na generowanie kombinacji.

0

Przeciez losowanie w totolotku to kombinacja 6 z 49 czyli 49!/6!*(49-6)!
i wychodzi cos ponad 13 milionow!

0

Hmm - jeżeli to ma być bez powtórzeń, to takie coś powinno być ok:

for i:=1 to 49 do
  for j:=i+1 to 49 do
    for k:=j+1 to 49 do
      for l:=k+1 to 49 do
        for m:=l+1 to 49 do
          for n:=m+1 to 49 do
            writeln(tekstowy,i:3,j:3,k:3,l:3,m:3,n:3);

Choć w zasadzie, to sam już nie [???] wiem - jak ktoś chce, to niech to obada - ja już zmęczony jestem [stuk]

// uruchom to i powiedz, jak długo liczył się 1% - ŁF

0

Wydaje mi sie ze mam cos co ci pomoze. Napisalem se taka procke co ci policzy takie kombinacje bez powtorzen jakie tylko chcesz. Zeby ci to dzialalo - musisz miec na formie listboxa ale przy generowaniu kombinacji 6 z 49 raczej bedziesz musial dokonac niewielkich zmian zeby zapisywalo ci do pliku... Sorry za nieczytelny kod :D zeby obliczyc np. kombinacje duzego lotka musisz wywolac ta procke tak: komb(49,6)

Oto i ona:



procedure TForm1.komb(ileliczb,naile:byte);
var tab:array[1..10]of integer;
n:integer;
s:string;
begin


n:=0;
repeat
inc(n);
tab[n]:=n;
until n=naile;
dec(tab[n]);

repeat

n:=naile+1;
repeat
dec(n);

if n=naile then
if tab[n]<ileliczb then break;

if n<naile then
if tab[n]<tab[n+1]-1 then break;

until 2=3;

inc(tab[n]);

if n<naile then
repeat
inc(n);
tab[n]:=tab[n-1]+1;
until n=naile;

s:='';
n:=0;
repeat
inc(n);
s:=s+inttostr(tab[n]);
if n<naile then s:=s+', ';
until n=naile;

listbox1.Items.Add(s);

until tab[1]=ileliczb-naile+1;

end;




0

a daloby sie dopisac kluczyk ktory umozliwialby wpisywanie do 10 liczb (optymalnie 8 lub 6) i porownywac je z otrzymanymi ?

0
DryoBates napisał(a)

... 49!/(6!43!)=303996 (jakoś strasznie mało)
No całe szczęście, że nie brakło Ci intuicji, bo za takie rachunki to trzeba by udzielić nagany! :-)

Liczymy to tak: user image (kulawy ten tex)

a_s_f napisał(a)

... i wychodzi cos ponad 13 milionow!

Smiglo napisał(a)

for i:=1 to 49 do
for j:=i+1 to 49...
w zasadzie nie da się szybciej, alefor i:=1 to 49-5 do
for j:=i+1 to 49-4 do
for k:=j+1 to 49-3 do ...

 będzie odrobinę lżejsze.


 > ##### ketrish napisał(a)
> a daloby sie dopisac kluczyk ktory umozliwialby wpisywanie do 10 liczb (optymalnie 8 lub 6) i porownywac je z otrzymanymi ?
Eeee? a w celu?
0

powiedzmy ze kiedys w gimnazjum nudzilo mi sie wiec zaczelem mieszac liczby z dat i co drugie (ok) losowanie trojeczka byla :P - kiedys nawet czworeczka sie trafila :P nie wiem jak jest atm czy zmienili "kod" czy tez ten sam stosuja :P

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