Rumah > Artikel > pembangunan bahagian belakang > Bagaimana Nombor Rawak Dijana
Nombor rawak memainkan peranan penting dalam pelbagai bidang seperti simulasi, kriptografi, persampelan statistik dan banyak lagi. Artikel ini menyelidiki cara nombor rawak dijana, memfokuskan pada dua bahasa pengaturcaraan popular: JavaScript dan Python.
Kebanyakan bahasa pengaturcaraan menggunakan penjana nombor pseudorandom (PRNG) untuk menghasilkan nombor rawak. PRNG menggunakan algoritma matematik untuk menjana urutan nombor yang kelihatan rawak. Nombor ini tidak benar-benar rawak kerana ia ditentukan oleh nilai awal yang dikenali sebagai benih. Walau bagaimanapun, ia mencukupi untuk banyak aplikasi.
Fungsi Math.random() JavaScript biasanya digunakan untuk menjana nombor rawak. Algoritma tepat yang digunakan oleh Math.random() boleh berbeza antara enjin JavaScript yang berbeza, tetapi algoritma yang digunakan secara meluas ialah Mersenne Twister.
Mersenne Twister terkenal dengan tempoh yang lama dan kerawak berkualiti tinggi. Berikut ialah contoh ringkas bagaimana algoritma Mersenne Twister boleh dilaksanakan dalam JavaScript:
class MersenneTwister { constructor(seed) { if (seed === undefined) { seed = new Date().getTime(); } this.mt = new Array(624); this.index = 0; this.mt[0] = seed; for (let i = 1; i < 624; i++) { this.mt[i] = (0x6c078965 * (this.mt[i - 1] ^ (this.mt[i - 1] >> 30)) + i) >>> 0; } } generate() { if (this.index === 0) { this.twist(); } let y = this.mt[this.index]; y = y ^ (y >> 11); y = y ^ ((y << 7) & 0x9d2c5680); y = y ^ ((y << 15) & 0xefc60000); y = y ^ (y >> 18); this.index = (this.index + 1) % 624; return y / 0xffffffff; } twist() { for (let i = 0; i < 624; i++) { const y = (this.mt[i] & 0x80000000) + (this.mt[(i + 1) % 624] & 0x7fffffff); this.mt[i] = this.mt[(i + 397) % 624] ^ (y >> 1); if (y % 2 !== 0) { this.mt[i] = this.mt[i] ^ 0x9908b0df; } } } } // Example usage: const mt = new MersenneTwister(12345); // Seed value const randomNumber = mt.generate(); // Get a random number console.log(randomNumber);
Kod ini menunjukkan versi ringkas algoritma Mersenne Twister yang digunakan untuk menjana nombor rawak.
Dalam JavaScript, anda boleh menjana nombor rawak antara 0 (termasuk) dan 1 (eksklusif) menggunakan Math.random():
const randomNumber = Math.random(); console.log(randomNumber);
Python menyediakan modul rawak, yang merangkumi pelbagai fungsi untuk menjana nombor rawak. Algoritma PRNG lalai yang digunakan oleh modul rawak Python juga ialah Mersenne Twister.
Berikut ialah beberapa contoh menjana nombor rawak dalam Python:
import random # Generate a random float between 0.0 and 1.0 random_float = random.random() print(random_float) # Generate a random integer between 1 and 100 random_int = random.randint(1, 100) print(random_int) # Generate a random number from a normal distribution with mean 0 and standard deviation 1 random_normal = random.gauss(0, 1) print(random_normal)
Untuk memastikan kebolehulangan, anda boleh menyemai penjana nombor rawak dalam Python:
import random # Seed the random number generator random.seed(12345) # Generate random numbers print(random.random()) print(random.randint(1, 100))
Menggunakan nilai benih yang sama akan menghasilkan urutan nombor rawak yang sama setiap kali anda menjalankan program.
Penjanaan nombor rawak ialah konsep asas dengan pelbagai aplikasi. Walaupun nombor yang dijana oleh Math.random() dalam JavaScript dan modul rawak dalam Python tidak benar-benar rawak, ia cukup rawak untuk kebanyakan tujuan praktikal. Memahami cara penjana ini berfungsi dan cara menggunakannya dengan berkesan adalah penting untuk pembangun dan penyelidik.
Artikel ini memberikan gambaran keseluruhan asas tentang cara nombor rawak dijana dalam JavaScript dan Python, bersama-sama dengan contoh praktikal menggunakan Math.random() dan modul rawak Python.
Atas ialah kandungan terperinci Bagaimana Nombor Rawak Dijana. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!