Picproje Elektronik Sitesi

SERBEST BÖLGE => Bilim Teknik => Matlab => Konuyu başlatan: Tagli - 18 Temmuz 2016, 11:55:45

Başlık: Şartları Sağlayan Rastgele Elemanı Bulmak
Gönderen: Tagli - 18 Temmuz 2016, 11:55:45
Sorum şu: Elimizde bir dizi olsun A = [8 2 1 9 6 3 0] gibi. Tamsayı olmayabilirler. Bu diziden, örneğin 5'ten küçük rastgele bir elemanın indeksini elde etmek istiyorum. Yani 2, 3, 6 veya 7 sonuçlarından birini rastgele olarak döndürecek.

Şartı sağlayan rastgele sayıyı bulmak kolay sayılır, alt_kume = A(A < 5);  şartı sağlayan elemanlardan oluşan alt kümeyi verecek. Sonra da alt_kume(randi(size(alt_kume,2))); derseniz şartı sağlayan rastgele bir sayı döner ama o zaman bu sayının ana dizi A'daki indeksini kaybediyoruz.

Bu işin içinden nasıl çıkabiliriz?
Başlık: Ynt: Şartları Sağlayan Rastgele Elemanı Bulmak
Gönderen: z - 18 Temmuz 2016, 12:14:20
5 den küçük sayıların indeksini alt diziye at.
Bu alt dizinin eleman sayısı N ise 0..N-1 aralığına random sayı üret.

Başlık: Ynt: Şartları Sağlayan Rastgele Elemanı Bulmak
Gönderen: muhendisbey - 18 Temmuz 2016, 12:22:10
en basiti
rastgele indeks üret eğer indekse karşılık gelen sayı 5 ten küçükse indeksi kabul et yoksa yeniden rastgele indeks üret.
Başlık: Ynt: Şartları Sağlayan Rastgele Elemanı Bulmak
Gönderen: muuzoo - 18 Temmuz 2016, 12:33:38
matlab de find komutu işini görebilir sanki:
http://www.mathworks.com/help/matlab/ref/find.html?requestedDomain=www.mathworks.com (http://www.mathworks.com/help/matlab/ref/find.html?requestedDomain=www.mathworks.com)

k = find(X<10,5) gibi.
Başlık: Ynt: Şartları Sağlayan Rastgele Elemanı Bulmak
Gönderen: Tagli - 18 Temmuz 2016, 12:51:23
Teşekkürler, find komutu ile çözdüm. Bu aslında z'nin dediği şeyi yapıyor. Mantığı ters kurmuşum. Önce şarta bağlı indeksleri belirleyip sonra onlar içinde rastgele seçim yapmak gerekiyormuş. Önce sayıları seçince indeks kayboluyor.