Rastgele Aralıklar ve Karıştırma
Sınırlandırılmış rastgele değerler ve koleksiyonları karıştırma
Rastgele Aralıklar ve Karıştırma, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
Aralıklar ve Karıştırma
Gerçek programlar nadiren 0'dan bound-1'e kadar olan değerleri ister. Bu derste isteğe bağlı aralıklar, koleksiyonları rastgele karıştırma ve rastgele öğeler seçme ele alınır.
Özel Aralık Formülü
min ile max arasında, uç değerler dahil bir int üretmek için min + rng.nextInt(max - min + 1) kullanın.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
int min = 10, max = 20;
int value = min + rng.nextInt(max - min + 1);
System.out.println("10 to 20: " + value);
}
}Başlangıç ve Sınırla nextInt
Modern Java, doğrudan nextInt(origin, bound) çağrısı yapmanıza olanak tanır: origin dahil, bound hariçtir. Bu, elle yazılan formülü gereksiz kılar.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
int value = rng.nextInt(10, 21);
System.out.println("10 to 20: " + value);
}
}Bir Aralıkta Rastgele Double Değerleri
lo ile hi arasında bir double elde etmek için lo + rng.nextDouble() * (hi - lo) kullanın.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
double lo = 5.0, hi = 7.5;
double value = lo + rng.nextDouble() * (hi - lo);
System.out.println(value);
}
}Bir Listeyi Karıştırma
Collections.shuffle(list), bir List içindeki öğeleri yerinde rastgele yeniden sıralar. Kart desteleri ve rastgeleleştirilmiş sınavlar için çok kullanışlıdır.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> deck = new ArrayList<>(List.of(1, 2, 3, 4, 5));
Collections.shuffle(deck);
System.out.println(deck);
}
}Tekrarlanabilir Karıştırmalar
Belirli bir karıştırma elde etmek için ikinci bağımsız değişken olarak tohum verilmiş bir Random aktarın: Collections.shuffle(list, new Random(seed)).
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<Integer> deck = new ArrayList<>(List.of(1, 2, 3, 4, 5));
Collections.shuffle(deck, new Random(99));
System.out.println(deck);
}
}Karıştırma Değiştirilebilir Bir Liste Gerektirir
List.of(...) bir değişmez liste oluşturur. Bu listeyi karıştırmak UnsupportedOperationException fırlatır. Önce listeyi new ArrayList<>(...) ile sarın.
Rastgele Bir Öğe Seçme
Rastgele bir dizin üreterek ve get kullanarak rastgele bir öğe seçin.
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<String> colors = List.of("red", "green", "blue");
Random rng = new Random();
String pick = colors.get(rng.nextInt(colors.size()));
System.out.println("Chosen: " + pick);
}
}Bir Diziyi Karıştırma
Dizilerde yerleşik bir karıştırma işlemi yoktur. Klasik yaklaşım Fisher-Yates algoritmasıdır: her öğeyi kendisinden önceki veya kendisine eşit rastgele bir dizindeki öğeyle yer değiştirin.
import java.util.Arrays;
import java.util.Random;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
Random rng = new Random(3);
for (int i = arr.length - 1; i > 0; i--) {
int j = rng.nextInt(i + 1);
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
System.out.println(Arrays.toString(arr));
}
}Rastgele Örnekleme
Birden fazla farklı öğe seçmek için bir kopyayı karıştırıp ilk birkaç öğeyi alın veya daha önce seçilmiş dizinleri izlemek üzere bir Set kullanın. Küçük listelerde karıştırıp dilim almak en basit yöntemdir.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> pool = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6, 7, 8));
Collections.shuffle(pool);
List<Integer> sample = pool.subList(0, 3);
System.out.println("Sample: " + sample);
}
}Uygulamaya Yönelik Notlar
Tamamen rastgele bir yeniden sıralamaya ihtiyacınız olduğunda karıştırma kullanın; sınırlandırılmış değerlere ihtiyacınız olduğunda özel aralık formülünü kullanın. Üst sınırın dahil olması gerektiğinde bir farkını her zaman unutmayın.
Kısa Kontrol
Aralıklar ve karıştırma konusundaki anlayışınızı sınayın.
Özet
Aralıkları ve karıştırmayı öğrendiniz.
- Aralıklar için
min + nextInt(max - min + 1)veyanextInt(origin, bound)kullanın. Collections.shuffledeğiştirilebilir bir listeyi yerinde yeniden sıralar.- Yeniden üretilebilirlik için karıştırmaya tohum verin.
- Rastgele öğeleri rastgele bir dizin aracılığıyla seçin.
Sıkça Sorulan Sorular
“Rastgele Aralıklar ve Karıştırma” dersi ücretsiz mi?
Evet — “Rastgele Aralıklar ve Karıştırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Rastgele Aralıklar ve Karıştırma” dersinde ne öğreneceğim?
Sınırlandırılmış rastgele değerler ve koleksiyonları karıştırma Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Rastgele Aralıklar ve Karıştırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Math Sınıfı
- Rastgele Sayılar Üretme
- Rastgele Aralıklar ve Karıştırma
- Matematiksel Yuvarlama ve Sınırlar