1

Konu: kombinasyon hesaplaması

iyigünler arkadaşlar;
okuduğum bir haber sonrası http://www.ntvmsnbc.com/id/25137904/ merak ettim bu işlem foxta yapılabilir mi?
sayısal lotonun tüm olasılıklarını 49 un 6 lı kombinasyonlarını hesaplayıp bir dbf e yazdıran program yazmak istedim ama mantığını bir türlü kuramadım.
Yaklaşık 14milyon kayıtı dbf alır mı?
Foxta direkt kombinasyon hesaplamada yok galiba.
yardımlarınız için şimdiden teşekkürler.

2

Re: kombinasyon hesaplaması

Visual Fox Pro
*        Author : Ugur YILMAZ

*           Date : 20101126
*           Todo :
*     Parameters :
*          Usage :
*          Notes :
 
LOCAL lni, m.lnks1,m.lnks2,m.lnks3,m.lnks4,m.lnks5,m.lnks6
 
LOCAL ARRAY laKom[49]
 
CLOSE DATABASES
 
CREATE CURSOR CrsSayi(Sayi1 int, Sayi2 int, Sayi3 int, Sayi4 int, Sayi5 int, Sayi6 int)
 
FOR m.lni = 1 TO 49
    laKom[m.lni]= m.lni
ENDFOR
 
m.lnKolonsay=ALEN(laKom)
 
MyKontur = 0
 
m.lnks1=1
m.lnks2=2
m.lnks3=3
m.lnks4=4
m.lnks5=5
m.lnks6=6
 
DO WHILE m.lnks1<=(m.lnKolonsay-5)
DO WHILE m.lnks2<=(m.lnKolonsay-4)
  DO WHILE m.lnks3<=(m.lnKolonsay-3)
   DO WHILE m.lnks4<=(m.lnKolonsay-2)
    DO WHILE m.lnks5<=(m.lnKolonsay-1)
     DO WHILE m.lnks6<=m.lnKolonsay
        INSERT INTO CrsSayi (SAYI1, SAYI2, SAYI3, SAYI4, SAYI5, SAYI6) VALUES (laKom(m.lnks1),    laKom(m.lnks2), laKom(m.lnks3), laKom(m.lnks4), laKom(m.lnks5), laKom(m.lnks6))
        m.lnks6=m.lnks6+1
     ENDDO
    m.lnks5=m.lnks5+1
    m.lnks6=m.lnks5+1
    ENDDO
    m.lnks4=m.lnks4+1
    m.lnks5=m.lnks4+1
    m.lnks6=m.lnks5+1
   ENDDO
  m.lnks3=m.lnks3+1
  m.lnks4=m.lnks3+1
  m.lnks5=m.lnks4+1
  m.lnks6=m.lnks5+1
  ENDDO
m.lnks2=m.lnks2+1
m.lnks3=m.lnks2+1
m.lnks4=m.lnks3+1
m.lnks5=m.lnks4+1
m.lnks6=m.lnks5+1
ENDDO
m.lnks1=m.lnks1+1
m.lnks2=m.lnks1+1
m.lnks3=m.lnks2+1
m.lnks4=m.lnks3+1
m.lnks5=m.lnks4+1
m.lnks6=m.lnks5+1
ENDDO
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

3

Re: kombinasyon hesaplaması

Uğur bey elinize sağlık.
Teşekkürler.

4 Son düzenleyen, cetinbasoz (26.11.2010 12:00:21)

Re: kombinasyon hesaplaması

Sanirim 14 milyon degil. Bende 13,983,816 cikti. (Duzeltme: Pardon yaklasik demissin).


Visual Fox Pro
Create Cursor xx (f1 i)

For ix=1 To 49
  Insert Into xx Values (m.ix)
Endfor
 
Select  ;
  x1.f1 As c1, ;
  x2.f1 As c2, ;
  x3.f1 As c3, ;
  x4.f1 As c4, ;
  x5.f1 As c5, ;
  x6.f1 As c6 ;
  FROM xx x1,xx x2,xx x3,xx x4,xx x5,xx x6 ;
  WHERE x1.f1 < x2.f1 And x2.f1 < x3.f1 And x3.f1 < x4.f1 And x4.f1 < x5.f1 And x5.f1 < x6.f1 ;
  INTO Cursor loto
 
Browse

5 Son düzenleyen, cetinbasoz (26.11.2010 12:06:14)

Re: kombinasyon hesaplaması

Habere baktim da:) Demek bir yazicida su iki dakikada yazdigimiz seyi bastirsak haber olabilecegiz:)

6

Re: kombinasyon hesaplaması

Sevgili Arkadaşlar,
10 sayının (0 dan 9 a) 6 kombinozonu 1 milyon olduğuna göre 50 sayının 6 lı kombinezonunun (0 dan 49 a),  13,983,816 olması imkansız. Bence bu sayının 13 milyarın çok üzerinde olmasi gerekiyor. Yanlış anımsamıyorsam gerçek sayının 50 üzeri 6 (50^6) olması gerekir. Yanılıyorsam lütfen düzeltin.
Sevgilerimle.
Erdal.

7

Re: kombinasyon hesaplaması

Çetin Üstad 'ım, yazıcıdan çıktı alma işide çok kolay, FRX dosyası olarak oluşturdum. Ama o kadar kuponu bulup çıktısını alıcak bir AMELE lazım smile
Gerçi her halükarda birkaç günde tüm kombinasyonları yazıcıdan çıkartırsın smile

Şimdi gazeteye mi çıkıcaz smile

*******************************

Erdal abi malesef yanlıyorsun. smile

1,2,3,4,5,6 doğru bir sıralama ama

1,2,3,4,6,5 yanlış.

Yani hesaplama yapıyorken tüm kombinasyonları değil, belirli şarta uyan kombinasyonları hesaplıyorsun.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

8

Re: kombinasyon hesaplaması

aslında bu kombinasyon değil permütasyon hesabı:
http://tr.wikipedia.org/wiki/Perm%C3%BCtasyon

p(49,6)=49!/(49-6)!

linktekine göre kod olarak ta böyleymiş (ben daha uzun yapardım doğrusu):

sonuc=1
for i=0 to 5
sonuc=sonuc*(49-i)
Next

Wait WINDOW sonuc

10.068.347.520

kombinasyon olsaydı sonuç daha düşük olurdu. ancak sıra da önemli olduğu için permütasyon.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

9

Re: kombinasyon hesaplaması

uğur yazını okuduktan sonra sözümü geri alıyorum. permütasyon değil kombinasyon olacak. ben sırası da önemli sanıyordum. onun formülü de burda:

http://tr.wikipedia.org/wiki/Kombinasyon

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

10

Re: kombinasyon hesaplaması

Üstad ; çok özür diliyerek sadece YUH! diyebilirmiyim  smile

Ya o SQL ne harika bir SQL. inanamıyorum yaptığına ya! PES, vallahi PES ....

Hep diyorum ya hani. Daha çok yolumuz var diye. Sözümü geri alıyorum. Gerçekten. Benim gidicek yolum filan yok. Sen yürü; bende seni trene bakar gibi izliyim smile

Akla zararsın Üstat smile

Aklına, Ellerine , Paylaşımlarına ve Kalbine sağlık smile

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

11 Son düzenleyen, keys (26.11.2010 15:15:27)

Re: kombinasyon hesaplaması

Erdal abi; Sıralamanın önemi yoksa (kombinasyon)kayıt adedi=49!/(6!*(49-6)!) = 13,983,816  eder.
ama sıralama benim için önemli derseniz (permütasyon) 1,2,3,4,5,6 da 1,2,3,4,6,5 da olsun dersen 49!/(49-6)! = 13,983,816 *6! yani 6!=6*5*4*3*2*1=720 den ilk yaklaşık 14 milyonluk kayıdın 720 katı eder yaklaşık 10milyar80 milyon olasılık olur.

12

Re: kombinasyon hesaplaması

Sevgili Arkadaşlar,
Ben Yanılmışım.Herhalde  Lotoda 1,2,3,4,5,6 ile 6,1,2,3,4,5 sıralamasının bir farkı yok sanırım.
Sevgilerimle.
Erdal

13

Re: kombinasyon hesaplaması

Arkadaşlar bu arada benim yazdığım kod benim bilgisayarımda 58.731 sürdü. Yani hemen hemen 1 dk.

Çetin üstadın ki ise;  17.310 sn ye.

Arada tam; 3.39 kat performans var.

Benim kodum yaklaşık 55 satır, Çetin üstadın ki 15 satır.  Arada tam 3.66 kat daha az kod var. Ayrıca kodun genişleyebilirliği de çok iyi.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

14

Re: kombinasyon hesaplaması

örneğin noterden tiyo aldım; 15 nolu top civalıymış:

Visual Fox Pro
Create Cursor xx (f1 i)

For ix=1 To 49
  Insert Into xx Values (m.ix)
Endfor
 
Select  ;
  x1.f1 As c1, ;
  x2.f1 As c2, ;
  x3.f1 As c3, ;
  x4.f1 As c4, ;
  x5.f1 As c5, ;
  x6.f1 As c6 ;
  FROM xx x1,xx x2,xx x3,xx x4,xx x5,xx x6 ;
  WHERE x1.f1 < x2.f1 And x2.f1 < x3.f1 And x3.f1 < x4.f1 And x4.f1 < x5.f1 And x5.f1 < x6.f1 ;
       AND (x1.f1=15 OR x2.f1=15 OR x3.f1=15 OR x4.f1=15 OR x5.f1=15 OR x6.f1=15) ;
  INTO Cursor loto


Çetin çok teşekkürler !

VFP9 SP2

15

Re: kombinasyon hesaplaması

Ugur pardon:)
Ah be Ali, ben oynasam ve tuyo ile 5 numarayi banko bilsem yine garantim olmaz, loto bir nedenle iptal edilirdi:)

16

Re: kombinasyon hesaplaması

çetin,

   doğa her zaman dengesini korur.. kimine yetenek kimine şans.. ikisi birden olursa zaten ihya olursun smile

17

Re: kombinasyon hesaplaması

Hafta sonu ödevi:

1.Dosya: Sayısal lotoda çıkabilecek tüm sayılar
2.Dosya: Bugüne kadar yapılan çekiliş sonuçları
   www.denbil.com/cikansayilar.xls

Ödev Konusu:
Bugüne kadar çıkan sonuçları 1.Dosyada bulup cekilishaftasi ve cekilis tarihi fieldlerine kaydetmek.
(Bu kayıt işlem en kısa sürede yapılmalıdır)

18

Re: kombinasyon hesaplaması

Parmak kaldirayim mi:) Cozumu zaten verdik gibi geldi.