Java Academy · Pelajaran

Julat Rawak dan Pengocokan

Nilai rawak berhad dan pengocokan koleksi

Pelajaran 3 daripada 413 langkah

Julat Rawak dan Pengocokan ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Julat dan Pengocokan

Program sebenar jarang memerlukan julat dari 0 hingga bound-1. Pelajaran ini merangkumi julat sewenang-wenangnya, pengocokan koleksi secara rawak dan pemilihan elemen rawak.

Formula Julat Tersuai

Untuk menghasilkan nombor bulat dari min hingga max termasuk kedua-duanya, 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 Asal dan Sempadan

Java moden membolehkan anda memanggil nextInt(origin, bound) secara terus: asal termasuk, sempadan tidak termasuk. Ini mengelakkan formula 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);
    }
}

Nombor Perpuluhan Rawak dalam Julat

Untuk mendapatkan nombor perpuluhan 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);
    }
}

Mengocok Senarai

Collections.shuffle(list) menyusun semula List secara rawak di tempatnya. Kaedah ini sangat sesuai untuk dek kad dan kuiz rawak.

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

Pengocokan Boleh Diulang

Hantarkan Random yang mempunyai benih sebagai argumen kedua untuk mendapatkan pengocokan berketentuan: 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);
    }
}

Pengocokan Memerlukan Senarai yang Boleh Diubah

List.of(...) mencipta senarai yang tidak boleh diubah. Pengocokan terhadapnya melontarkan UnsupportedOperationException. Bungkusnya dengan new ArrayList<>(...) terlebih dahulu.

Memilih Elemen Rawak

Pilih elemen rawak dengan menjana indeks rawak dan 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);
    }
}

Mengocok Tatasusunan

Tatasusunan tidak mempunyai fungsi pengocokan terbina dalam. Pendekatan klasik ialah algoritma Fisher-Yates: tukar setiap elemen dengan indeks terdahulu atau sama yang dipilih secara rawak.

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

Pensampelan Rawak

Untuk memilih beberapa item yang berbeza, kocok salinan dan ambil beberapa item pertama, atau gunakan Set untuk menjejak indeks yang telah dipilih. Mengocok kemudian mengambil sebahagian daripadanya ialah cara paling mudah untuk senarai 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);
    }
}

Nota Praktikal

Kocok apabila anda memerlukan penyusunan semula penuh secara rawak; gunakan formula julat tersuai apabila anda memerlukan nilai yang mempunyai sempadan. Sentiasa ingat pelarasan satu apabila sempadan atas sepatutnya termasuk.

Semakan Pantas

Uji pemahaman anda tentang julat dan pengocokan.

Imbas Kembali

Anda telah belajar tentang julat dan pengocokan.

  • Gunakan min + nextInt(max - min + 1) atau nextInt(origin, bound) untuk julat.
  • Collections.shuffle menyusun semula senarai yang boleh diubah di tempatnya.
  • Tetapkan benih pada pengocokan supaya hasilnya boleh dihasilkan semula.
  • Pilih elemen rawak melalui indeks rawak.
Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
104
Pelajaran
374

Soalan Lazim

Adakah pelajaran “Julat Rawak dan Pengocokan” percuma?

Ya — teks penuh “Julat Rawak dan Pengocokan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Julat Rawak dan Pengocokan”?

Nilai rawak berhad dan pengocokan koleksi Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Java Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Julat Rawak dan Pengocokan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Kelas Math
  2. Menjana Nombor Rawak
  3. Julat Rawak dan Pengocokan
  4. Pembundaran dan Had Matematik
← Kembali ke Java Academy