Sayısal Lotonun Tüm Olasılıklarını Nasıl Bulurum?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Ademkoysuren
Üye
Mesajlar: 83
Kayıt: 26 Ağu 2003 03:07
Konum: KIRŞEHİR
İletişim:

Sayısal Lotonun Tüm Olasılıklarını Nasıl Bulurum?

Mesaj gönderen Ademkoysuren »

selam arkadaşlar

bana sayısal lotonun tüm olasılıklarını bulabileceğim kod lazım yardımcı olabilirmisiniz
Cemre Bilgisayar Yazılım
KIRŞEHİR
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

tüm olasılıkları derken 49'un 6lı tüm kombinasyonlarını üretebilecek kod mu kastediyorsunuz?
Kullanıcı avatarı
Ademkoysuren
Üye
Mesajlar: 83
Kayıt: 26 Ağu 2003 03:07
Konum: KIRŞEHİR
İletişim:

Mesaj gönderen Ademkoysuren »

EVET
Cemre Bilgisayar Yazılım
KIRŞEHİR
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
const
  TOPLAMSAYI = 49;
  ELEMANSAYISI = 6;
  procedure recurse(num:byte;toplam:byte; bool : boolean;S:String);
  begin
     if bool then s := s+inttostr(num)+',';
     if toplam = ELEMANSAYISI then begin
       listbox1.items.add(s);
       exit;
     end;
     if num = TOPLAMSAYI then exit;
     recurse(num+1,toplam+1,true,s);
     recurse(num+1,toplam,false,s);
  end;
var
 s:string;
begin
 s := '';
 recurse(0,0,false,s);
end;
6991908 tane kombinasyon üretir ama bunu bir listbox'a sığdıramazsınız. Küçük sayılarla deneyin derim ya da alternatif bir depolama yöntemi kullanın (dosyaya yazmak gibi)
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba,

Bir ara merak salmıştım olasılık olaylarına halende çok hoşuma gidiyor.

Bende şöyle küçük bir kod yazmıştım.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
s:variant;
t,i,j,k,l,m,n:integer;
begin
s:=0;
for i:=1 to 44 do
begin

   for j:=i+1 to 45 do
   begin

     for k:=j+1 to 46 do
     begin

        for  l:=k+1 to 47 do
        begin
           t:=0;
           for m:=l+1 to 48 do
           begin
              for n:=m+1 to 49 do
              begin
                 memo1.lines.add(inttostr(i)+'-'+inttostr(j)+'-'+inttostr(k)+'-'+inttostr(l)+'-'+inttostr(m)+'-'+inttostr(n));
                 s:=s+1;
                 if (l mod 35)=0 then form1.Caption:=inttostr(l);
                 label1.caption:=VarToStr (s) ;
                 if  (k mod 46=0) and (l=47) and (m=48) and (n=49) then
                 begin
                 t:=1;
                sleep(5000);
                form1.caption:=inttostr(n);
              // showmessage('dfasdfasd') ;

                 end;
              end;
           end;
        end;
     end;

   end;
end;
end;
6 tane döngü açıp sonuca kolayca ulaşabiliniyor.

Saygılarımla
Çalışmalarınızda başarılar.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
Ademkoysuren
Üye
Mesajlar: 83
Kayıt: 26 Ağu 2003 03:07
Konum: KIRŞEHİR
İletişim:

Mesaj gönderen Ademkoysuren »

teşekkür ederim arkadaşlar bir sorum daha olacak

50 tane sayı (1,2,3.....50) kadar bunun içinden 12 tanesini kendim seçecem ve 12 sayısı 6 basamaktaki tüm kombinasyonlarını üretebilecek kod nasıl yaparım.( seçilen 12 sayı 50 nin içinde herhangi sayılar.
Cemre Bilgisayar Yazılım
KIRŞEHİR
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Yani 12'nin 6'lı kombinasyonu demek istiyorsun... Daha önceki cevabı buna uyarlaman lazım. 49'un 6'lı kombinasyonu nasılsa bu da aynı şekilde.

- Diziye aldığın seçilmiş bu 12 sayıyı rakamsal ifadedeki yerlerine ya işlem sırasında ya da daha sonra yerleştirirsin.

- Mesela seçili ilk rakam 25 olsun. Çıkan sonuçlarda 1 olan yerlere 25 koyarsan seçtiğin rakamların olduğu bir kombinasyon elde edersin.
Resim
Resim ....Resim
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

benimde bir tavsiyem olacak matematik kitaplarından permütasyon
kombinasyon ve olasılık ile ilgili kısımları bir araştırıver :!: yoksa
bu soruların sonu gelmez...
hani bir çin ata sözü varmışya
"Birisine bir balık verirseniz bir öğün karnını doyurursunuz
Balık tutmasını öğretirseniz...."
Kullanıcı avatarı
Ademkoysuren
Üye
Mesajlar: 83
Kayıt: 26 Ağu 2003 03:07
Konum: KIRŞEHİR
İletişim:

Mesaj gönderen Ademkoysuren »

istediğim gibi oldu balık tutmaya başladım şimdilik, herkese teşekkürler

[list]
procedure TForm1.BitBtn3Click(Sender: TObject);
const
TOPLAMSAYI = 50;
procedure recurse(num:byte;toplam:byte; bool : boolean;S:String);
begin
if bool then
begin
s := s+ ListBox1.Items[num-1]+'-' ;
end;

if toplam = EDT_ElemanSayisi.Value then begin
Memo1.Lines.Add(S);
exit;
end;
if num = ListBox1.Items.Count then exit;

recurse(num+1,toplam+1,true,s);
recurse(num+1,toplam,false,s);
end;
var
s:string;
i:byte;
begin
Memo1.Clear;
I:=0;
s := '';
ListBox1.Clear;
for i:= 0 to 50 do
begin
if CheckListBox1.Checked[i] then
ListBox1.Items.Add(CheckListBox1.Items[i]);
end;
recurse(0,0,false,s);
ShowMessage('Tarama Bitti');

end;
[/list][/quote]
Cemre Bilgisayar Yazılım
KIRŞEHİR
Cevapla