Gönderen Konu: Şartları Sağlayan Rastgele Elemanı Bulmak  (Okunma sayısı 743 defa)

Çevrimdışı Tagli

  • Profesyonel Üye
  • *****
  • İleti: 4142
  • twitter -> gTagli
Şartları Sağlayan Rastgele Elemanı Bulmak
« : 19 Temmuz 2016, 02: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?
Gökçe Tağlıoğlu

Çevrimdışı z

  • proje
  • Profesyonel Üye
  • *****
  • İleti: 4743
Ynt: Şartları Sağlayan Rastgele Elemanı Bulmak
« Yanıtla #1 : 19 Temmuz 2016, 03: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.

« Son Düzenleme: 19 Temmuz 2016, 03:27:45 Gönderen: z »

Çevrimiçi muhendisbey

  • Profesyonel Üye
  • *****
  • İleti: 2662
Ynt: Şartları Sağlayan Rastgele Elemanı Bulmak
« Yanıtla #2 : 19 Temmuz 2016, 03: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.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Çevrimdışı muuzoo

  • Emektar
  • *****
  • İleti: 666
    • Günlük
Ynt: Şartları Sağlayan Rastgele Elemanı Bulmak
« Yanıtla #3 : 19 Temmuz 2016, 03:33:38 »
matlab de find komutu işini görebilir sanki:
http://www.mathworks.com/help/matlab/ref/find.html?requestedDomain=www.mathworks.com

k = find(X<10,5) gibi.
www.muuzoo.gen.tr - Kişisel karalamalarım...

Çevrimdışı Tagli

  • Profesyonel Üye
  • *****
  • İleti: 4142
  • twitter -> gTagli
Ynt: Şartları Sağlayan Rastgele Elemanı Bulmak
« Yanıtla #4 : 19 Temmuz 2016, 03: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.
Gökçe Tağlıoğlu