Shuffle yani karıştırma işlemi de random sayı üretici kullanır.
1. Fisher-Yates Algoritması
Fisher-Yates Algoritması yazısına taşıdım.
2. Daha Kötü Bir Shuffle Algoritması
Fisher-Yates algoritmasını bilmeyen insanlar safça şuna benzer bir kod yazıyorlar.
Bu kod sıradaki nesneyi, rastgele bir nesne ile yer değiştiriyor. Ancak zaten yer değiştirmiş bir nesnenin tekrar seçilme olasılığı yüksek. Bu yüzden Fisher-Yates algoritmasına göre daha yavaş çalışır. Fisher-Yates ise sondan başa doğru ilerler ve yer değiştiren bir nesneye tekrar dokunmaz.Fisher-Yates algoritmasını bilmeyen insanlar safça şuna benzer bir kod yazıyorlar.
Random r = new Random();
for (int i = 0; i < a.size(); i++) {
int index = r.nextInt(a.size());
int temp = a.get(i);
a.set(i, a.get(index));
a.set(index, temp);
}
3. Java İle Shuffle
Şöyle yaparız
// assume `cards` is a `List`,
Collections.shuffle(cards);
// cards is now shuffled
4. Belli Bir Aralıkta Karıştırılmış ve Tekrar Etmeyen Sayı Üretme
Belli bir aralıkta ve tekrar etmeyen sayı üretmek için önce sayılar bir listeye doldurulur daha sonra Collections.shuffle() çağırılarak rastgelelik sağlanır.Örnek - Java
Şöyle yaparızfinal List<Integer> l = new ArrayList<Integer>();
for (int j = 1; j < 7; j++ ) {
l.add( j );
}
Collections.shuffle( l );
Hiç yorum yok:
Yorum Gönder