Şartları Sağlayan Rastgele Elemanı Bulmak

Başlatan Tagli, 18 Temmuz 2016, 11:55:45

Tagli

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?
Gökçe Tağlıoğlu

z

#1
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.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhendisbey

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.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

muuzoo

gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

Tagli

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.
Gökçe Tağlıoğlu