Java Academy · Pelajaran

Menjana Nombor Rawak

Rawak dan ThreadLocalRandom

Pelajaran 2 daripada 413 langkah

Menjana Nombor Rawak ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 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.

Menjana Nombor Rawak

Nilai rawak penting untuk permainan, simulasi dan pensampelan. Java menyediakan Math.random(), kelas Random dan ThreadLocalRandom untuk kod serentak.

Asas Math.random

Math.random() mengembalikan nombor perpuluhan dalam julat [0.0, 1.0): sifar termasuk, satu tidak termasuk.

public class Main {
    public static void main(String[] args) {
        double r = Math.random();
        System.out.println("Value between 0 and 1: " + r);
    }
}

Menskalakan Math.random

Darabkan dan lakukan penukaran jenis untuk mendapatkan julat nombor bulat. (int)(Math.random() * 6) menghasilkan nilai dari 0 hingga 5.

public class Main {
    public static void main(String[] args) {
        int roll = (int)(Math.random() * 6) + 1;
        System.out.println("Dice: " + roll);
    }
}

Kelas Rawak

Kelas java.util.Random lebih fleksibel. Cipta satu tika, kemudian panggil kaedah seperti nextInt, nextDouble dan nextBoolean.

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rng = new Random();
        System.out.println(rng.nextBoolean());
        System.out.println(rng.nextDouble());
    }
}

nextInt dengan Sempadan

nextInt(bound) mengembalikan nombor bulat dari 0, termasuk, hingga bound, tidak termasuk. nextInt(6) memberikan nilai dari 0 hingga 5.

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rng = new Random();
        int value = rng.nextInt(100);
        System.out.println("0 to 99: " + value);
    }
}

Menetapkan Benih untuk Kebolehulangan

Memberikan benih kepada pembina menjadikan jujukan itu berketentuan: benih yang sama sentiasa menghasilkan nombor yang sama. Ini amat berguna untuk ujian.

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rng = new Random(42);
        System.out.println(rng.nextInt(1000));
        System.out.println(rng.nextInt(1000));
    }
}

Benih Sama, Jujukan Sama

Dua objek Random yang dibina dengan benih yang sama menghasilkan jujukan yang serupa. Ini berguna apabila pepijat perlu dihasilkan semula dengan tepat.

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random a = new Random(7);
        Random b = new Random(7);
        System.out.println(a.nextInt(50) == b.nextInt(50));
    }
}

ThreadLocalRandom

Dalam program berbilang benang, satu Random yang dikongsi boleh menjadi kesesakan. ThreadLocalRandom.current() memberikan setiap benang penjana sendiri tanpa perebutan sumber.

import java.util.concurrent.ThreadLocalRandom;

public class Main {
    public static void main(String[] args) {
        int value = ThreadLocalRandom.current().nextInt(1, 7);
        System.out.println("Dice: " + value);
    }
}

Jangan Kongsi Satu Random antara Benang

Jangan hantarkan satu tika Random kepada banyak benang; tindakan ini boleh menghasilkan taburan yang lemah dan perebutan sumber. Sebaliknya, gunakan ThreadLocalRandom dalam kod serentak.

Nombor Perpuluhan dan Gaussian

nextDouble() memberikan nilai dalam [0,1), manakala nextGaussian() mengembalikan nilai daripada taburan normal dengan min 0 dan sisihan piawai 1.

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rng = new Random(1);
        System.out.println(rng.nextDouble());
        System.out.println(rng.nextGaussian());
    }
}

Memilih Alat yang Tepat

Gunakan Math.random() untuk mendapatkan nombor perpuluhan dengan cepat, Random apabila anda memerlukan sempadan atau benih, dan ThreadLocalRandom dalam kod serentak. Untuk nilai rawak yang melibatkan keselamatan, gunakan SecureRandom.

Semakan Pantas

Uji pemahaman anda tentang nilai rawak.

Imbas Kembali

Anda telah belajar menjana nombor rawak.

  • Math.random() memberikan nombor perpuluhan dalam [0,1).
  • Random.nextInt(bound) memberikan nilai dari 0 hingga bound-1.
  • Benih menjadikan jujukan boleh dihasilkan semula.
  • ThreadLocalRandom ialah pilihan selamat untuk kod serentak.
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 “Menjana Nombor Rawak” percuma?

Ya — teks penuh “Menjana Nombor Rawak” 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 “Menjana Nombor Rawak”?

Rawak dan ThreadLocalRandom 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 2 daripada 4.

Berapa lamakah pelajaran “Menjana Nombor Rawak” 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