Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Modelleme sayı kombinasyonu
#11
(30-07-2024, Saat: 11:13)Hayati Adlı Kullanıcıdan Alıntı:
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?

Evet yeterli  32 veya 64 bit en fazla 96 bit e kadar kullanacağım. 
Çok Teşekkür ederim sorun çözüldü Saygılar iyi çalışmalar
Cevapla
#12
@Hayati  beyin çözüm önerisini mevcut hali ile 32 bite kadar kullanabilirsiniz.

64 bite kadar kullanmanız için  fonksiyonda aşağıdaki değişiklikleri yapmanız gerekiyor.

64 bitten daha büyük değerler için bu yapı doğru sonuçlar üretmeyecektir.

procedure TForm1.GenerateCombinations;
var
i, j: UInt64;  // <----!!!
combination: string;
begin
for i := 0 to 15 do  // 2^4 - 1 = 15, tüm 4 bitli kombinasyonlar
begin
  combination := '';
  for j := 0 to 40 do
  begin
    if (i and (Uint64(1) shl j)) <> 0 then  // <--- !!!!
      combination := '1' + combination
    else
      combination := '0' + combination;
  end;

  ListBox1.Items.Add(combination);
end;
end;
Cevapla
#13
(31-07-2024, Saat: 09:49)frmman Adlı Kullanıcıdan Alıntı: @Hayati  beyin çözüm önerisini mevcut hali ile 32 bite kadar kullanabilirsiniz.

64 bite kadar kullanmanız için  fonksiyonda aşağıdaki değişiklikleri yapmanız gerekiyor.

64 bitten daha büyük değerler için bu yapı doğru sonuçlar üretmeyecektir.

procedure TForm1.GenerateCombinations;
var
i, j: UInt64;  // <----!!!
combination: string;
begin
for i := 0 to 15 do  // 2^4 - 1 = 15, tüm 4 bitli kombinasyonlar
begin
  combination := '';
  for j := 0 to 40 do
  begin
    if (i and (Uint64(1) shl j)) <> 0 then  // <--- !!!!
      combination := '1' + combination
    else
      combination := '0' + combination;
  end;

  ListBox1.Items.Add(combination);
end;
end;

Teşekkürler
Cevapla
#14
(29-07-2024, Saat: 17:30)mersoy Adlı Kullanıcıdan Alıntı: 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 

Merhaba,

Aşağıdaki Python kodu, 0 ile 1 arasında 5 bitlik tüm kombinasyonları sıralı bir şekilde üretir. Bu kod, her kombinasyonu sistematik bir şekilde oluşturur ve random kullanımına gerek kalmadan tüm ihtimalleri listeler:

```python
from itertools import combinations

def generate_combinations(n, k):
    return [tuple(int(i in comb) for i in range(n)) for comb in combinations(range(n), k)]

n = 5
for k in range(1, n+1):
    combs = generate_combinations(n, k)
    for comb in combs:
        print(' '.join(map(str, comb)))
```

Bu kod, her bir bit kombinasyonunu belirli bir uzunlukta (5) ve her kombinasyonun yalnızca 1'lerin sayısını değiştirerek üretir. Verimli bir şekilde çalışır ve kombinasyonları sıralı olarak sağlar.

Umarım bu yardımcı olur!
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Databasedeki total sayı Altıner 2 1.212 12-12-2022, Saat: 11:14
Son Yorum: Altıner
  random 0001 ile 1000 arası sayı üretme erdogan 4 2.207 14-04-2022, Saat: 00:27
Son Yorum: enigma
  dizideki en buyuk sayı ve id si sadikacar60 2 1.389 27-10-2021, Saat: 18:59
Son Yorum: sadikacar60
  inputbox'a sadece harf / sayı gimek ? cooxed 2 1.748 30-06-2021, Saat: 20:45
Son Yorum: mcuyan
  Edit Sayı Girme OZCANK 5 4.844 16-12-2020, Saat: 01:54
Son Yorum: mustafaozpinar



Konuyu Okuyanlar: 1 Ziyaretçi