![]() |
|
Modelleme sayı kombinasyonu - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: Modelleme sayı kombinasyonu (/showthread.php?tid=7811) Sayfalar:
1
2
|
Modelleme sayı kombinasyonu - mersoy - 29-07-2024 Merhabalar aşağıdaki örnekteki gibi bir modelleme koduna ihtiyaçım var Sorum : 0 ila 1 arasında 5 ve yukarı kombinasyonun tüm ihtimalleri listeleyen koda ihtiyacım var 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 . . 1 1 1 1 1 Bunu sırayla yapması gerekiyor random kullanamam milyondan fazla satır oluştuğundan dolayı her defasında kombinasyon varmı diye kontrol zaman kaybı olur Ayrıca her üretilen kombinasyonu kontrol etmek zaman alacağından nihai hesaplama ile dataya ekleyeceğim Modelleme sayı kombinasyonu - mrmarman - 29-07-2024 Sorunuzu ben şahsen anlamadım (11111)₂ = (1 × 2⁴) + (1 × 2³) + (1 × 2²) + (1 × 2¹) + (1 × 2⁰) = 31 0 ve 1 olacak şekilde 31 tane rakam elde edebilirsiniz demek. Kaç tane 1 yanyana olacak? 0'dan 31'e kadar bir integer for döngüsü kurup, her rakamı 2'lik (binary) dönüşüm yapmak kafi olmalı. Ya da soruyu ben anlamadım... Cvp: Modelleme sayı kombinasyonu - mersoy - 29-07-2024 (29-07-2024, Saat: 18:00)mrmarman Adlı Kullanıcıdan Alıntı: Sorunuzu ben şahsen anlamadım Muharrem hocam cevap verdiğiniz için teşekkür ederim sorumu izah etmeye çalışayım öncelikle binary değil (0101010) olarak gördüğünüz Farklı rakamda olabilir , A,B olabilir ,True False de olabilir (3 5 3 5 3 5 3 5 3) (A B B A B A B A B A B A B A ) (T F T T T T T F F F) modelleme yapmak istiyorum daki kastım A A A A A A A A A A A A A B A A A A A A A A A A A A A B A A A A A A A A A A A A A B A A A A A A A A A A....... ........ ......... B B B B B B B B B B B A B B B B B B B B B B B B B A B B B B B B B B B B B B B Bir sıra halinde tüm kombinasyonları üretmek istiyorum ,sonra bunları bir veri tabanına yedekliyeceğim, yedeklediğim bu varyasyonları ,başka bir veriyi tabanına referans alarak atıyacağım . böylelikle programım bu varyasyonlara göre modellimi oluşturacak. Modelleme sayı kombinasyonu - mrmarman - 29-07-2024 ikililer halinde olduğunu teyit edebilirseniz yine aynı kapıya çıkıyor derim, hepsini binary olarak 0/1 olarak kurabilir, sonra bunları * 0 için true, A, F * 1 için false, B, T olarak değerlendirirsiniz. Bu haliyle dahi tek bir fonksiyon işinizi görecektir. Hane sayısının hepsinin 1 olduğu hali kaç ise hiç veritabanı kurmanıza dahi lüzum olmadan direkt kombinasyon sayısını bulabilirsiniz. Gereği olduğunda da direk rakamların binary karşılığını alıp 0/1 için karşılığını yerine koymak kalacaktır. Siz de model için decimal rakam olarak karşılaştırma yapma özgürlüğüne kavuşursunuz. örneğin karşılaştırılacak model ABAABAABAABBBABABBABABAB olsun... bunun A olanlarını 0, B olanlarını 1 yaptığınızda 010010010011101011010101 çıkar ki bunun Decimal karşılığı 4799189 olduğuna göre veritabanı için düşündüğünüz model için sadece bu rakamı değerlendirecek bir karşılık işinizi görecektir. TFTFTTFTFTFTFTTFTFTFTFTFTFTTTTTTFFFTFTFFFFTFTFTTFFFF gibi bir şablon dahi şak diye 1010110101010110101010101011111100010100001010110000 binary dönüşümü ile 3049403895071408 rakamına ulaşma imkanı sunar. Limit fonksiyonları ile bir X/Y alanının içinde mi olduğunu anlamak da kolaylaşır benzetimler oluşturabilirsiniz. Cvp: Modelleme sayı kombinasyonu - mersoy - 29-07-2024 hocam bir örnek procedure eklemeniz mümkünmü acaba ? Modelleme sayı kombinasyonu - mrmarman - 29-07-2024 Göreceğiniz üzere basit matematik içerir. Çözümü uzaklarda aramayın. Fonksiyonlar function DecToBin(iDec: LongInt): string; begin Result:=''; while iDec > 0 do begin Result := IntToStr(iDec and 1) + Result; iDec := iDec shr 1; end; end; function BinToDec(Value: String): LongInt; var i, iValueSize: Integer; begin Result := 0; iValueSize := Length(Value); for i := iValueSize downto 1 do if Value[i] = '1' then Result := Result + (1 shl (iValueSize - i)); end; function ModelToDec( aText: string; aTrue:Char = '1'; aFalse:Char = '0' ): LongInt; begin aText := StringReplace( aText, aTrue, '1', [rfReplaceAll] ); aText := StringReplace( aText, aFalse, '0', [rfReplaceAll] ); result := BinToDec(aText); end; function DecToModel( aVal: LongInt; aTrue:Char = '1'; aFalse:Char = '0' ): String; begin Result := DecToBin(aVal); Result := StringReplace( Result, '1', aTrue, [rfReplaceAll] ); Result := StringReplace( Result, '0', aFalse, [rfReplaceAll] ); end; Kullanımı :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
LValStr : String;
LVal : LongInt;
LModel : String;
begin
LValStr := 'TFTFTTFTTTFTTFTFFFTFTFTTFTFTTF';
LVal := ModelToDec( LValStr, 'T', 'F');
Memo1.Lines.Add( Format('%s = %d', [ LValStr, LVal ]) );
LModel := DecToModel( LVal, '1', '0' );
Memo1.Lines.Add( Format('%s', [ LModel ]) );
LModel := DecToModel( LVal, 'A', 'B' );
Memo1.Lines.Add( Format('%s', [ LModel ]) );
LModel := DecToModel( LVal, 'T', 'F' );
Memo1.Lines.Add( Format('%s', [ LModel ]) );
LModel := DecToModel( LVal, 'X', 'Y' );
Memo1.Lines.Add( Format('%s', [ LModel ]) );
end;
Sonuç : Kod: TFTFTTFTTTFTTFTFFFTFTFTTFTFTTF = 729189078Model olarak A, B hallerini veya 'X', 'Y' verince de yine 729189078 rakamına ulaşırsınız. Karşılaştırma için bu decimal sayı kafi Örneğin :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
LValStr : String;
LVal : LongInt;
LModel : String;
begin
LValStr := 'TFTFTTFTFTFTFTTFTFTFTFTFTFTTTTT';
LVal := ModelToDec( LValStr, 'T', 'F');
Memo1.Lines.Add( Format('%s = %d', [ LValStr, LVal ]) );
LModel := DecToModel( LVal, '1', '0' );
LVal := ModelToDec( LModel, '1', '0');
Memo1.Lines.Add( Format('%s = %d', [ LModel, LVal ]) );
LModel := DecToModel( LVal, 'A', 'B' );
LVal := ModelToDec( LModel, 'A', 'B');
Memo1.Lines.Add( Format('%s = %d', [ LModel, LVal ]) );
LModel := DecToModel( LVal, 'T', 'F' );
LVal := ModelToDec( LModel, 'T', 'F');
Memo1.Lines.Add( Format('%s = %d', [ LModel, LVal ]) );
LModel := DecToModel( LVal, 'X', 'Y' );
LVal := ModelToDec( LModel, 'X', 'Y');
Memo1.Lines.Add( Format('%s = %d', [ LModel, LVal ]) );
end;
Kod: TFTFTTFTFTFTFTTFTFTFTFTFTFTTTTT = 1454069087Cvp: Modelleme sayı kombinasyonu - mersoy - 30-07-2024 (29-07-2024, Saat: 21:17)mrmarman Adlı Kullanıcıdan Alıntı: Göreceğiniz üzere basit matematik içerir. Çözümü uzaklarda aramayın.Sayın hocam (dönülmez akşamların ufkundayım, kendimi acme roketine bağlayıp uzaya fırlatmış ve oradan da marsa doğru rota bilgisayarım olmadan pencereden bakarak mars gitmeye çalışan coyote gibi hissediyorum ) ![]() vermiş olduğunuz kod ile Regresyon analizi tarzındaki doğrulamalarda ve modellemelerde kullanabilirim ayrıca programımın sonraki aşamasını daha önce yazmış olduğum binlerce satırı sayenizde modifiye ederek az satırla çok daha verimli ve stabil çalışmasını sağlayacağım bunun için teşekkür ederim. Maalesef aradığım program parçacığı bu değil. Sizin beni anlayamamanız gibi bir şey söz konusu değil, ben doğru cümleler ile kendimi ve sorumu ifade edemedim. Öncelikle: "Kronolojik özgeçmişim :1972 doğumlu 1989 yılında programcılığa başlamış olup commodore 64 te basic ile oyunlar ve hesaplamalar yapardım sonrasında foltran Python cobol assembly Gwbasic pascal delphi devam ederek 2000 yılına değin bilgisayar ile haşir neşir oldum sonrası yok bir ara program ihtiyacı nedeni ile delphide bir kaç program yazdım 2005 - 2008 arası sonrası yine yok eğitim durumum iş ihtiyacı dolayısı ile lise yarım yamalak kaldı benim için matematik (toplama, çıkarma,çarpma,bölme) den ibaret ha birde abaküsten sonuçta bunlarla da olsa geçte olsa işimi yapmaya çalışan iş insanıyım. "Hocam affınıza sığınarak forumda her soru soran üniversite öğrencisi matematik kurdu profesyonel programcı olmayabilir kendini geliştirmeye çalışan veya yeni başlamış kendine bir gelecek kurma ümidi ile yanıp tutuşan programcı adayları olabilir. onlar sizin seviyenize çıkamıyabilirler "en azından 40 fırın ekmek yemeleri gerekiyor ilerde belki" ama siz onların seviyesine inip onlara yol gösterebilirsiniz Saygılarımla Şimdi Hocam ve değerli forum üyeleri sorumu örnekle göstereyim Kod: procedure TForm1.Button1Click(Sender: TObject);benim yapmak istediğim random olarak değilde örnek olarak her satırda 3 adetli bir kombinasyon ile 000 00000000000000000 <--- sadece görsel 001 . 010 .. 011 100 ... 110 ........ 101 .............. 111 11111111111111111 nihai kombinasyonu kısa sürede oluşturmak her defasında aceba bu kombinasyon varmı diye aratmak istemiyorum örnek kod eklemenizi rica ediyorum iyi sabahlar Modelleme sayı kombinasyonu - mrmarman - 30-07-2024 Üzgünüm hala anlamadım. Tüm kombinasyonlar demek basamak sayısı maksimum değere kadar for döngüsü ile Binary oluşturmak demektir. Size başarılar diliyorum. Modelleme sayı kombinasyonu - enigma - 30-07-2024 ikili sayı sisteminde (0 ve 1) için kaç basamak varsa 2 ^ n dir (n = basamak sayısı) bunun formülü budur. Eğer 0 ile 9 arasındaki değerler isteniyorsa o zaman 10 ^ n dir. Açıkçası ne istiyor ben de anlamadım. Modelleme sayı kombinasyonu - Hayati - 30-07-2024 procedure TForm1.GenerateCombinations; var i, j: Integer; combination: string; begin for i := 0 to 7 do // 2^3 - 1 = 7, tüm 3 bitli kombinasyonlar begin combination := ''; for j := 0 to 2 do begin if (i and (1 shl j)) <> 0 then combination := '1' + combination else combination := '0' + combination; end; ListBox1.Items.Add(combination); end; end; procedure TForm1.GenerateCombinations; var i, j: Integer; combination: string; begin for i := 0 to 15 do // 2^4 - 1 = 15, tüm 4 bitli kombinasyonlar begin combination := ''; for j := 0 to 3 do begin if (i and (1 shl j)) <> 0 then combination := '1' + combination else combination := '0' + combination; end; ListBox1.Items.Add(combination); end; end; gibi bir şey mi? |