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);
}