Soru sordiziden random kurallı diziler oluşturma
lifeisnotbeautiful tarafından 6 yıl önce soruldu

Merhaba, [1 1 1 2 2 2 3 3 3] şeklinde bir dizi bulunmakta her biri elemanıma 1'den 9'a kadar numara verdiğimi varsaydığım taktirde, yazacağım kodun rastgele 3'lü diziler oluşturmasını istiyorum ve bu diziler 1 2 3 şeklinde sıralansın ama varsayalım ilk dizide 3 numaralı 1 elemanı kullanıldığında bu elemanımı döngüden çıkarsın ve tekrar kullanmasın istiyorum.Bu şekilde bir küçük çaplı proje için incelememi önereceğiniz örnekler mevcut mudur? Şimdiden teşekkür ederim.

20 Cevap
sayginer Yönetici tarafından 6 yıl önce cevaplandı

ilk dizide 3 numaralı 1 elemanı kullanıldığında bu elemanımı döngüden çıkarsın ve tekrar kullanmasın istiyorum
Burada istediğiniz bir daha hiç mi 3 kullanmasın?
 

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

burda söylemek istediğim 3 tane 1 elamanım var birinci 1 ikinci 1 üçüncü 1. İlk random dizimde üçüncü 1 kullanıldığında tekrar onu hiç bir dizede kullanmasın sonrasında 2'lerden birini seçsin sonra 3'lerden birini seçsin ve 3 elemanlı bir dizi oluştursun ama burda kullanılan üçüncü 1 , ikinci 2, üçünkü 3 tekrar kullanılmasın diğer random dizilerde

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Yani burada yapmaya calistiginiz bir kumenin 3'lu kombinasyonlarini bulmak?
Soyle bir yol izlenebilir:

  1. Elemanlarinizin bulundugu bir A dizimiz olsun.
  2. A dizisinin eleman sayisi kadar  da B=1:length(A) seklinde bir matrisimiz olsun.
  3. Randi ile 1 ile olusturdugumuz B matrisinin eleman sayisi arasinda 3 tane rastgele sayi uretelim.
  4. Urettigimiz her sayinin B'de karsilik gelen elementini alalim. Aldigimiz bu elemente karsilik gelen elementi da A'dan cekelim, (Yani aslinda B matrisi Anin element numaralarini temsil ediyor olacak)
  5. Sonra sectiklerimizi B'de NaN atayalim.

Biraz hizli yazdim, anlasilmayan yer varsa sorabilrisiniz.

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

söylediğiniz cümle tamamen doğru bir kümenin 3 li kombinasyonları fakat bu kombinasyonlar 1 2 3 sıralamasında olacak. Bu detayı hangi kısımda anlattığını farkedemedim birazcık daha bilgi verebilir misiniz. Teşekkür ederim cevap için

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Randi ile olusturdugumuz sayilarin once B matrisinde karsilik gelen elementlerini daha sonra da B'de secilenlerin A'da karsilik geldiklerini aldiktan sonra (yani kombinasyonlari bulduktan sonra) bu secilen elementleri sort(C1) seklinde buyukten kucuge siralayabiliriz. (C1 ile kastettigim ilk kombinasyonum mesela.)

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

Tekrar tekrar okuyup söylediklerinizi yapmaya çalıştım ama çok iyi bir yol alamadım. * "Randi ile 1 ile olusturdugumuz B matrisinin eleman sayisi arasinda 3 tane rastgele sayi uretelim. " dediğiniz cümlede randi ile 1 ile kısmını anlayamadım

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Merhaba,
Yukarıda bahsettiğimden çok daha kolay bir uygulama geldi aklıma.
Aşağıdaki örneği inceleyebilirsiniz. Burada kritik nokta şu aslında: Eğer ben A'nin elemanlarını rastgele karıştırır ve 3erli olarak gruplandırıdıktan sonra sıralarsam yapmak istediğiniz şeye ulaşmış olurum.
 

%% MATLABTurkiye.com
A = [1 1 1 2 2 2 3 3 3];

rastgele = randperm(length(A),9); %1den A'nin uzunlugu kadar rastgele tekrar etmeyen sayilar uretiyoruz

% rastgele urettigim her bir sayi aslinda A'daki bir elementin sira
% numarasina karsilik geliyor

%asagidaki dongude ucerli olarak sayilari A'dan cekiyor ve sort ile
%siraliyorum
for say=1:3:length(A);
sec = rastgele(say:say+2);

B = sort(A(1,sec))

end
lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

teşekkür ederim daha açıklayıcı oldu fakat, run yaptığımda yine sıralama yapamıyorum, örneğin 1 2 2 , 1 3 3 ve 1 2 3 şeklinde çıktılar aldım. Fakat ben hepsinin 1 2 3 şeklinde sıralanmasını istiyorum, bunun içinde öneriniz var mı?

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Ben sanırım bir noktayı kaçırdım. Sizin yapmak istediğiniz her seçimde mutlaka bir tane 1, bir tane 2 ve bir tane 3 olması mı?

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

Evet 1,2,3 şeklinde sıralanmak istiyorum

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Ben sanırım bir noktayı kaçırdım. Sizin yapmak istediğiniz her seçimde mutlaka bir tane 1, bir tane 2 ve bir tane 3 olması mı?
Eğer istediğiniz mutlaka 1,2 ve 3 barındıran gruplar ise; rastgele matrisini şöyle oluşturun
1 ile 3 arasında değer alabilen ve 3 tane elamanı olan bir matris oluşturun. => BUNU 3 kere yapın ve uç uca ekleyin.

YANİ şöyle bir şey:
rastgelematrisim = [1 2 3 3 2 1 2 1 3] buradaki her elemen A'daki bir elemente karşılık gelecek.
ŞÖYLE Kİ:
A'nin 1. elementi (Yani ilk 1) 1. gruba gidecek,
A'nin 2. elementi (Yani ikinci 1) 2. gruba gidecek,
A'nin 3. elementi (Yani son 1) 3. gruba gidecek,
A'nin 4. elementi (Yani ilk 2) 3. gruba gidecek,
A'nin 5. elementi (Yani ilk 1) 2. gruba gidecek.

 

 

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Yanıtım anlaşıldı mı acaba?

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

merhaba, yanıtınız için teşekkür ederim tekrar deneyip sizi bilgilendireceğim.

lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

Merhaba, söylediğinizi yapmaya çalışırken birşey takıldı aklıma, sonuçta burda 3 farklı rakam grubu vardı bu daha fazla olduğunda bir dizi içindeki farklı rakamları nasıl bulabilirim matlab programında

sayginer Yönetici tarafından 6 yıl önce cevaplandı

burda 3 farklı rakam grubu vardı bu daha fazla olduğunda bir dizi içindeki farklı rakamları nasıl bulabilirim matlab programında
Bu ne demek? Söylemeye çalıştığınız şey bir vektör içerisinde eşşiz sayıları bulmak mı? Yani tekrar eden elemanları sadece 1 kere almak mı? Öyleyse

unique(A)