Soru & Cevap

java da yeni rastgelelik metodu oluşturma

19.04.2020 - 03:56

Merhaba,

Ödevimde hazır bir text belgesinden rastgele kişi çekmem isteniyor, ancak hazır random metoduyla değil kendi oluşturduğum bir metodla yapmam gerekiyor .İnternette birkaç algoritma gördüm ama biraz kafamı karıştırdı açıkçası . Bunun için nasıl bir yol izlemeliyim ?

5 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user f.erenyucal
f.erenyucal
17.02.2023 - 11:07

Merhabalar Buse, bunun için bende birkaç araştırma yaptım ve bir sonuç buldum. özel bir rastgelelik algoritması uygulamak istiyorsanız, kendi rastgele sayı üretici sınıfınızı yazmanız gerekebilir

 

public class MyRandom {
    private long seed;
    private static final long multiplier = 0x5DEECE66DL;
    private static final long addend = 0xBL;
    private static final long mask = (1L << 48) - 1;

    public MyRandom(long seed) {
        this.seed = (seed ^ multiplier) & mask;
    }

    public int nextInt(int n) {
        long oldseed, nextseed;
        do {
            oldseed = seed;
            nextseed = (oldseed * multiplier + addend) & mask;
        } while (!seedUpdater.compareAndSet(this, oldseed, nextseed));
        return (int)(nextseed >>> 16) % n;
    }
}

 

Bu örnekte, rastgele sayılar için bir örnek algoritma kullandık. Bu algoritma, java.util.Random sınıfındaki algoritmaya benzer bir şekilde, bir çekirdek (seed) değeri kullanır ve her çağrıda yeni bir rastgele sayı üretir

Bu sınıfı kullanarak bir metin dosyasından rastgele bir satır seçmek için şöyle yapabilirsin

 

public static String pickRandomLine(String filename) throws IOException {
    List<String> lines = Files.readAllLines(Paths.get(filename), StandardCharsets.UTF_8);
    MyRandom random = new MyRandom(System.currentTimeMillis());
    int index = random.nextInt(lines.size());
    return lines.get(index);
}