0Pricing
Java Academy · Pelajaran

Rentang Acak dan Pengacakan

Nilai acak berbatas dan pengacakan koleksi.

Rentang Acak dan Pengacakan adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Rentang dan Pengacakan

Program nyata jarang hanya memerlukan nilai dari 0 hingga bound-1. Pelajaran ini membahas rentang sembarang, pengacakan koleksi, dan pemilihan elemen acak.

Rumus Rentang Khusus

Untuk menghasilkan bilangan bulat dari min hingga max secara inklusif, gunakan min + rng.nextInt(max - min + 1).

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

nextInt dengan Titik Awal dan Batas

Java modern memungkinkan Anda langsung memanggil nextInt(origin, bound): titik awal termasuk, sedangkan batas tidak termasuk. Cara ini menghindari rumus manual.

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

Bilangan Pecahan Acak dalam Rentang

Untuk mendapatkan bilangan pecahan dari lo hingga hi, gunakan lo + rng.nextDouble() * (hi - lo).

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

Mengacak List

Collections.shuffle(list) mengubah urutan sebuah List secara acak dan langsung. Cara ini cocok untuk tumpukan kartu dan kuis acak.

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

Pengacakan yang Dapat Diulang

Berikan Random yang memiliki nilai awal sebagai argumen kedua untuk mendapatkan pengacakan deterministik: 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);
    }
}

Pengacakan Memerlukan List yang Dapat Diubah

List.of(...) membuat list yang tidak dapat diubah. Mengacaknya akan menimbulkan UnsupportedOperationException. Bungkus terlebih dahulu dengan new ArrayList<>(...).

Memilih Elemen Acak

Pilih elemen acak dengan membangkitkan indeks acak lalu menggunakan get.

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

Mengacak Larik

Larik tidak memiliki pengacakan bawaan. Pendekatan klasiknya adalah algoritma Fisher-Yates: tukarkan setiap elemen dengan indeks acak yang lebih awal atau sama.

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

Pengambilan Sampel Acak

Untuk mengambil beberapa item yang berbeda, acak salinannya lalu ambil beberapa elemen pertama, atau gunakan Set untuk mencatat indeks yang sudah dipilih. Mengacak lalu mengambil sebagian adalah cara paling sederhana untuk list kecil.

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

Catatan Praktis

Lakukan pengacakan saat Anda memerlukan perubahan urutan acak secara menyeluruh; gunakan rumus rentang khusus saat Anda memerlukan nilai yang memiliki batas. Selalu ingat kemungkinan selisih satu saat batas atas harus bersifat inklusif.

Uji Cepat

Uji pemahaman Anda tentang rentang dan pengacakan.

Ringkasan

Anda telah mempelajari rentang dan pengacakan.

  • Gunakan min + nextInt(max - min + 1) atau nextInt(origin, bound) untuk rentang.
  • Collections.shuffle mengubah urutan list yang dapat diubah secara langsung.
  • Gunakan nilai awal pada pengacakan agar hasilnya dapat direproduksi.
  • Pilih elemen acak melalui indeks acak.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Rentang Acak dan Pengacakan” gratis?

Ya — teks lengkap “Rentang Acak dan Pengacakan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Rentang Acak dan Pengacakan”?

Nilai acak berbatas dan pengacakan koleksi. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Rentang Acak dan Pengacakan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kelas Math
  2. Membuat Bilangan Acak
  3. Rentang Acak dan Pengacakan
  4. Pembulatan dan Batas Matematika
← Kembali ke Java Academy