A mnie to Lotto:)

0

Witam!
Chciałbym wykonać taki generator liczb Dużego Lotka, aby mi losował 6 liczb i żeby potem z tych 6 liczb ułożył wszystkie możliwe kombinacje trój- lub czteroliczbowe. Jeśli np. będzie wylosowane 1,3,2 i 3,2,1 i 1,2,3 to żeby usuwał dwie z tych kombinacji i zostawiał te 1,2,3. A czemu żeby usuwał resztę? Ponieważ znalazły się 3 kombinacje z tymi samymi liczbami to żeby została jedna kombinacja itd. Ma ktoś jakieś źródło lub pomysł na taki program?
Wszystkie kombinacje żeby były pokazywane w memo:) Z góry dziękuję za odpowiedź. [browar]

0

o ile mnie moja zawodna pamięć nie myli to ktoś o tym pisał arta poszukaj, a nusz coś znajdziesz

0

Znalazłem na 4p takie coś:

Funkcja NUMER_KOMBINACJI podaje, którym z kolei układem są liczby które mamy zadeklarowane w tabeli 'Liczba[]'.
Np. układ liczb:
1,2,3,4,5,6 to numer kombinacji 1,
1,2,3,4,5,7 to numer kombinacji 2,
.... itd ....
zaś 44,45,46,47,48,49 to ostatni numer kombinacji czyli 13 983 816.

//Funkcja SILNIA zwraca silnię n-tej liczby

function SILNIA(n: Byte): LongWord;
begin
  SILNIA := 1;
  if n < 2 then
    SILNIA := 1 
  else
    SILNIA := SILNIA(n - 1) * n;
end; { koniec funkcji SILNIA }

//Funkcja KOMBINACJE oblicza ilość kombinacji bez powtórek.
// Lba  - Dlugość ciągu, ilość wylosowanych liczb; tu 6.
// elem - Ilość elmentów; tu 49.

function KOMBINACJE(Lba, Elem: Byte): LongWord;
begin
  KOMBINACJE := Trunc(Round(SILNIA(Elem) / (SILNIA(Lba) * SILNIA(Elem - Lba))));
end; { koniec funkcji KOMBINACJE }

// Funkcja NUMER_KOMBINACJI zwraca numer kombinacji odpowiadający
// kolejnym liczbom.
// Liczby zawarte są w tabeli ( Liczba : Array[1..6] Of Byte; ).
// ka - ilość liczb, tu podstaw 6.
// en - ilość elementów, tu podstaw 49.

function NUMER_KOMBINACJI(ka, en: Byte): LongWord;
var
  xx: Integer;
  Pozycja: Integer;
begin
  Pozycja := KOMBINACJE(ka, en);
  for xx := ka downto 1 do
    if (en - Liczba[xx]) > (ka - xx) then
      Pozycja := Pozycja - KOMBINACJE((ka + 1) - xx, en - Liczba[xx]);
  NUMER_KOMBINACJI := Pozycja;
end; { koniec funkcji NUMER_KOMBINACJI }

Oczywiście funkcja jest przystosowana do obliczania numeru kombinacji dla innych układów np 5z42.... Należy jednak pamiętać, że numer kombinacji możemy tu obliczyć tylko dla układów bez powtórek czyli każda z 6-ciu liczb w tabeli 'Liczba[]' musi być inna i muszą one być posortowane od najmniejszej do największej.

Mam nadzieję, że z zamianą Numeru Kombinacji na układ 6-ciu liczb z 49 nie będzie większych problemów. Jeśli sprawi to kłopot, proszę o e-milka.

Wierzę, że opisana funkcja przyda się grającym w Lotto :-)

Ale kompletnie nie wiem jak się za to zabrać:( Potrzebuję generować najpierw jakieś 6 liczb potem trójki lub czwórki - kombinacje i odrzucać powtarzające się kombinacje (np. 1,2,3 i 3,1,2 to odrzuca tą drugą bo wiadomo że na blankiecie jak zaznaczymy te cyfry 1,2,3 czy 3,1,2 to przecież jest to samo). POMÓŻCIE PROSZĘ!

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