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
lifeisnotbeautiful tarafından 6 yıl önce cevaplandı

evet söylemek istediğim 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 bulunan dizide 5 farklı rakam olduğunu söyleyen bir kod yazdıktan sonra bunların gruplara ayırarak A için 1 1 1 B için 2 2 2 C için 3 3 3 gibi farklı dizilere bu grup bilgilerini yazmak anlamında demiştim. Unique() 5 farklı grup olduğunu bulabilir ama ben bulduğu bu farklı 5 grupu 5 farklı dizi halinde versin istiyorum 1 leri 2leri 3 leri hepsini ayrı grupta. Kusra bakmayın biraz karışık açıkladım ama sizin yazdığınız koddan sonra böyle birşey aklıma geldi. Sonra bu ayrılan grupların her birinden rasgele 1 rakam alarak istediğim kurallı dizimi oluşturabilirim diye düşündüm ?

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

Tavsiyem önerdiğimi denemeniz yönünde.

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

Merhaba, 3 farklı dizi olarak A=[1 1 1] B=[2 2 2] , C[3 3 3] olarak ayırdım dizimi , şimdi bu üç diziyi kullanarak her birinden bir eleman alacak şekilde yeni bir diziyi nasıl oluşturabilirim , nasıl bir döngü kurabilirim yardımcı olur musunuz

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

Merhaba,
Bence bir iletişimsizlik oldu. Benim önerimi uygulamanız sizin faydanıza olacaktır. Sizin ısrarla yapmaya çalıştığınız şey bir yerden sonra içinden çıkılmaz bir hal alacak.
Benim önerim şudur:
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.

——————————————————–
Tekrarlamam gerekirse size şunu söylüyorum:
A matrisinin her bir elamnını gideceği grup bilgisini içeren bir matris oluşturun. Bu matrisin adı da yukarıda açıkladığım gibi rastgele eleman eluşturan matris olsun.
Peki bu matrisi nasıl oluşturacaksınız???
CEVAP: Bir önceki dönütümdeki kodu inceleyerek, deneyerek, yanlış yapa yapa doğruyu bularak. Yani NASIL?
 

%% MATLABTurkiye.com
clear; clc
A = [11 21 31 12 22 32 13 23 33]
%Kafa karismasin diye de bu sayilarin adlarini degistirdim
% 11>> 1inci 1, 21>>2inci 1, 31>>3uncu 1, Bu sekilde gidiyorlar
%
rastgele = [randperm(3,3) randperm(3,3) randperm(3,3)] 
%1-3 arasinda sayi ureten 3 ayri grup
%Bu rastgele matrisim A'daki her bir elemanin nereye gidecegine karar
%verecek. Yani ratgele matrisi ile A matrisini eslestirecegim, buna mapping
%de deniyor.
%

%Simdi 1 isimli gruba ait elemanlari bulalim:

Grup1Konumlari = find(rastgele==1) %Bunun sonucu bana 1 grubuna gidecek elemanlarin A matrisindeki yerini verecek

%Simdi de bu konum bilgisini kullanarak elamanlari cekelim
Grup1Elemanlari=  [A(Grup1Konumlari(1)) A(Grup1Konumlari(2)) A(Grup1Konumlari(3))]


% Yukaridaki kodun aynisini 2. ve 3. gruplar icin de yapmalisiniz

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

Merhabalar teşekkür ederim şimdi daha iyi anladım ben daha kompleks bir şekilde ayırma işlemi yapmıştım