Kombinacja liczb LOTTO

0

Jak zrobic by na memo wyswietlic wszystkie mozliwe kombinacie
4 cyfrowej liczy np ?
0000

Czy ktos umie zmodyfikowac ten kod by to zrobic ?

Ten kod pochodzi z tego portalu ale jak go zastosowac?
B prosze o pomoc w napisaniu takiego kodu.
Dzieki wielkie za pomoc

"Kombinatoryka jest teorią zajmującą się zbiorami skończonymi i odwzorowaniem między nimi. Jej początki sięgają XVII wieku i wiążą się z grami hazardowymi. Obecnie kombinatoryka znajduje duże zastosowanie w rachunku prawdopodobieństwa oraz w teorii informacji."
J. i K. Nikodem, Matematyka dla szkół średnich, wydanie IV, 2000

Kluczem do sukcesu w kombinatoryce jest znajomość silni (n!). Silnię liczby n liczy się w sposób następujący:

n! = 1 * 2 * 3 * ... * n

Skoro już wiemy jak obliczyć silnię, napiszemy funkcję, która policzy ją za nas:

function Factorial(Value: Word): Extended;
var
Factor: Extended;
begin
Factor := 1;
if Value > 1 then
Factor := Value * Factorial(Value - 1);
Result := Factor;
end;

Jest to podstawowa funkcja i wszystkie inne funkcje kombinatoryczne, które za chwilę przedstawię będą korzystały właśnie z niej.

Symbol Newtona

function NewtonSymbol(n, k: Word): Extended;
var
Factor_n, Factor_k, Factor_nk: Extended;
begin
Result := 1;
if (n >= k) then
begin
Factor_n := Factorial(n);
Factor_k := Factorial(k);
Factor_nk := Factorial(n - k);
Result := Factor_n / (Factor_k * Factor_nk);
end;
end;

Wariacje bez powtórzeń

function Variations(n, k: Word): Extended;
var
Factor_n, Factor_nk: Extended;
begin
Result := 1;
if (n >= k) then
begin
Factor_n := Factorial(n);
Factor_nk := Factorial(n - k);
Result := Factor_n / Factor_nk;
end;
end;

Wariacje z powtórzeniami

uses Math

function TUtils.VariationsRep(n, k: Word): Extended;
begin
Result := Power(n ,k);
end;

Ci, którzy się choć trochę znają na kombinatoryce zauważyli już na pewno brak dwóch algorytmów: permutacji i kombinacji.

Permutacja

function Permutation(Value: Word): Extended;
begin
Result := Factorial(Value);
end;

Kombinacje

function Combination(n, k: Word): Extended;
begin
Result := NewtonSymbol(n, k);
end;

Tu już sprawa jest prosta, gdyż należy tylko wywołać funkcje, które napisałem już wcześniej.

Mam nadzieję, że komuś się mój artykuł przyda.

0

Hehe Artylul to chyba do innego dzialu :D
A jak chcesz cos o losowaniu liczb to juz było.POSZUKAJ

0

Jak zrobic by na memo wyswietlic wszystkie mozliwe kombinacie
4 cyfrowej liczy np ?
0000

No to chyba pętelka wystarczy, no nie?

var i: integer;
begin
for i := 0 to 9999 do
memo1.Lines.Add(IntToStr(i))

Albo nie rozumiem ... :/

0

Nie chodzi mi o losowanie.
Chodzi mi o wszystkie mozliwe kombinacje 4 cyfrowej liczby

i chyba ta petelka jest dobra . Dzieki

0

Tak ale ta petelka dochodzi tylko do 5762

w memo czemu do konca nie wyswietla ?

0

Tak ale ta petelka dochodzi tylko do 5762

w memo czemu do konca nie wyswietla ?

bo memo ma ograniczenie wielkosc do 32kB albo 64 kB

chociaz powinno wyswietlic - robilem inna metoda i w memo mialem wyswietlone od 0 to 9999.

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