Rastgele Arama (Random Search) Algoritması Java: Giriş, Nasıl Çalışır, Örnek

Monte Carlo araması olarak da bilinen Rastgele Arama algoritması, rastgeleliğe dayalı bir arama yöntemidir. Bir veri dizisindeki her bir öğeyi sırayla kontrol etmek yerine, bu algoritma incelenecek bir dizi öğeyi rastgele seçer. Bu yaklaşım, sıralı aramaya kıyasla zaman ve kaynak tasarrufu sağlar.

Nasıl çalışır

  1. Adım 1: Aramak istediğiniz veri dizisiyle başlayın.

  2. Adım 2: İncelenecek belirli sayıda öğeyi rastgele seçin.

  3. Adım 3: Arama koşuluyla eşleşip eşleşmediklerini görmek için seçilen öğeleri kontrol edin.

  4. Adım 4: Eşleşen bir öğe bulunursa sonucu döndürün; değilse Adım 2'ye dönün.

  5. Adım 5: Bir eşleşme bulunana veya maksimum deneme sayısına ulaşılana kadar işleme devam edin.

Avantajlar ve dezavantajlar

Avantajları:

  • Kaynak Açısından Verimli: Özellikle büyük veri dizileri için zamandan ve bellekten tasarruf sağlar.
  • Rastgelelik: Kolayca tahmin edilemez, rastgelelik gerektiren durumlara uygundur.

Dezavantajları:

  • Başarı Garantisi Yok: Algoritmanın istenilen sonucu bulacağının garantisi yoktur.
  • Uzun Zaman Alabilir: En kötü durumda, algoritma sıralı aramaya göre daha uzun sürebilir.

Örnek ve Açıklama

Bir dizideki bir tamsayıyı bulmak için Rastgele Arama Algoritmasını kullanmanın aşağıdaki örneğini düşünün:

import java.util.Random;  
  
public class RandomSearchExample {  
    static int randomSearch(int[] arr, int target) {  
        Random rand = new Random();  
        int maxAttempts = arr.length; // Maximum number of attempts  
        for(int i = 0; i < maxAttempts; i++) {  
            int randomIndex = rand.nextInt(arr.length); // Randomly select an index  
            if(arr[randomIndex] == target) {  
                return randomIndex; // Return the index if found  
            }  
        }  
        return -1; // Return -1 if not found  
    }  
  
    public static void main(String[] args) {  
        int[] numbers = {1, 5, 9, 3, 7};  
        int target = 3;  
        int result = randomSearch(numbers, target);  
        if(result != -1) {  
            System.out.println("Number " + target + " found at index " + result);  
        } else {  
            System.out.println("Number " + target + " not found in the array.");  
        }  
    }  
}  

Bu örnekte, bir dizideki bir tamsayıyı bulmak için Rastgele Arama Algoritmasını kullanıyoruz. Diziyi yineliyoruz, rastgele bir dizin seçiyoruz ve bu dizindeki öğenin hedef sayıyla eşleşip eşleşmediğini kontrol ediyoruz. Bulunursa dizini döndürürüz; değilse maksimum deneme sayısına ulaşılana kadar devam ederiz.