Nombor rawak digunakan dalam banyak senario pengaturcaraan, daripada pembangunan permainan dan simulasi kepada penjanaan UUID. Untuk itu, JavaScript menyediakan kaedah terbina dalam untuk berfungsi dengan nombor rawak. Dalam siaran ini, kami akan meneroka cara yang berbeza untuk menjana nombor rawak dalam JavaScript, daripada yang mudah kepada yang lanjutan. Jadi, mari mulakan!
Dalam JavaScript, kaedah utama untuk menjana nombor rawak ialah Math.random(). Kaedah ini mengembalikan nombor rawak titik terapung antara 0 (termasuk) dan 1 (eksklusif). Ini bermakna ia akan mengembalikan nilai dalam julat [0, 1), seperti 0.2345 atau 0.6789. Ia semudah itu! Mari semak sampel kod untuk ini:
let randomNum = Math.random(); console.log(randomNum); // Outputs a random number between 0 and 1
Ini akan memberikan output seperti ini, jika kami menjalankan program pada sistem kami:
Walaupun, ini adalah titik permulaan yang bagus, tetapi jika kita memerlukan integer rawak atau nombor dalam julat tertentu, Math.random() sahaja tidak akan mencukupi untuk melakukan tugas itu.
Untuk menjana nombor rawak dalam julat tertentu, katakan antara nilai min tertentu dan nilai maksimum tertentu yang lain, anda perlu melakukan sedikit matematik. Berikut ialah formula yang akan membantu:
function getRandomInRange(min, max) { return Math.random() * (max - min) + min; } console.log(getRandomInRange(10, 20)); // Outputs a number between 10 and 20
Ini akan memberikan output seperti:
Math.random() menjana nombor antara 0 dan 1. Dan, dengan mendarabnya dengan (maks - min) dan kemudian menambah min, anda memastikan nombor itu berada dalam julat [min, maks).
Kadangkala, anda mungkin memerlukan nombor bulat dan bukannya nilai titik terapung. Untuk menjana integer rawak dalam julat tertentu, anda boleh menggunakan Math.floor() atau Math.ceil(). Jom semak caranya:
function getRandomIntInRange(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } console.log(getRandomIntInRange(1, 100)); // Outputs a random integer between 1 and 100
Apabila kita menjalankan kod ini, kita akan mendapat output yang serupa seperti ini:
Di sini, Math.floor() membundarkan ke bawah kepada integer terdekat, memastikan hasilnya ialah integer dalam julat [min, maks].
Anda juga boleh menjana nilai boolean rawak (benar atau palsu) dalam JavaScript, yang boleh berguna dalam permainan atau dalam sebarang senario membuat keputusan:
function getRandomBoolean() { return Math.random() >= 0.5; } console.log(getRandomBoolean()); // Outputs true or false randomly
Kami akan mendapat output yang serupa seperti ini, apabila kami akan menjalankan kod:
Sekarang, jika kita ingin memilih elemen rawak daripada tatasusunan, kita boleh menggunakan Math.floor() dengan Math.random() dengan mudah. Mari lihat bagaimana kita boleh melakukannya:
let randomNum = Math.random(); console.log(randomNum); // Outputs a random number between 0 and 1
Sekarang, ini akan memberi kita sebarang unsur rawak daripada tatasusunan seperti ini, apabila kita menjalankan program:
Untuk mengocok tatasusunan, iaitu menyusun semula elemennya secara rawak, anda boleh menggunakan algoritma kocok Fisher-Yates. Begini cara ia boleh dilaksanakan dengan bantuan Math.random():
function getRandomInRange(min, max) { return Math.random() * (max - min) + min; } console.log(getRandomInRange(10, 20)); // Outputs a number between 10 and 20
Sekarang, apabila kita akan menjalankan program, ia akan memberikan kita tatasusunan yang dikocok seperti ini:
Dalam banyak senario pembangunan, anda mungkin perlu menggunakan pengecam unik dan anda mungkin mempertimbangkan untuk menggunakan UUID rawak (Pengecam Unik Sejagat). Berikut ialah contoh asas penjana UUID menggunakan kaedah rawak kami:
function getRandomIntInRange(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } console.log(getRandomIntInRange(1, 100)); // Outputs a random integer between 1 and 100
Jadi, apabila kita menjalankan program ini, ia akan menghasilkan UUID rawak seperti ini:
Seperti yang anda lihat, JavaScript menyediakan banyak fleksibiliti untuk menjana nombor rawak. Dan dengan Math.random() sebagai asas, kita boleh mencipta nombor rawak, integer, boolean dan juga tatasusunan rawak. Dengan memahami teknik teras ini, kami berharap anda akan mempunyai asas yang kukuh untuk melaksanakan kerawak dalam projek JavaScript anda. Sama ada anda membina permainan, simulator loteri atau sebarang ciri yang memerlukan ketidakpastian, kaedah ini akan menampung keperluan anda!
Dan akhirnya, terima kasih kerana membaca blog! Saya harap anda mendapati ia bermaklumat dan berharga. Untuk mendapatkan maklumat lanjut, ikuti saya di Twitter (swapnoneel123) di mana saya berkongsi lebih banyak kandungan sedemikian melalui tweet dan rangkaian saya. Dan, sila pertimbangkan untuk berkongsinya dengan orang lain di Twitter dan tandai saya dalam siaran anda supaya saya dapat melihatnya juga. Anda juga boleh menyemak GitHub (Swpn0neel) saya untuk melihat projek saya. Saya doakan anda hari yang hebat di hadapan dan sehingga itu terus belajar dan terus meneroka!!
Tidak, Math.random() tidak benar-benar rawak. Ia adalah penjana nombor rawak pseudo (PRNG), yang bermaksud ia menggunakan algoritma deterministik untuk menjana nombor. Walaupun nombor ini mungkin kelihatan rawak, ia dijana melalui proses yang boleh diramal.
JavaScript's Math.random() tidak membenarkan anda menetapkan benih secara asli. Sesetengah bahasa pengaturcaraan lain membenarkan penjana nombor rawak berbiji untuk kebolehulangan, tetapi dalam JavaScript, anda memerlukan pustaka pihak ketiga (seperti seedrandom) jika anda mahukan ciri ini.
Pilihan reka bentuk di sebalik Math.random() mengembalikan nombor titik terapung antara 0 dan 1 adalah untuk memberikan fleksibiliti. Dengan mengembalikan nilai yang dinormalkan, pembangun boleh menskalakannya dengan mudah kepada mana-mana julat atau format, seperti integer atau nombor antara min dan maks tertentu.
Dalam kebanyakan kes, Math.random() cekap dan cukup pantas untuk kegunaan biasa, seperti dalam permainan, animasi atau aplikasi harian yang lain. Walau bagaimanapun, jika anda perlu menjana berjuta-juta nombor rawak dalam masa nyata (contohnya, dalam simulasi berprestasi tinggi), anda mungkin ingin mempertimbangkan penyelesaian yang dioptimumkan seperti penjana rawak berasaskan WebAssembly atau algoritma tersuai.
Tidak, Math.random() tidak cukup selamat untuk tujuan kriptografi. Ia boleh diramal dan tidak boleh digunakan dalam situasi yang memerlukan nombor rawak selamat, seperti menjana kata laluan atau kunci kriptografi. Untuk senario ini, anda harus menggunakan kaedah crypto.getRandomValues() yang disediakan oleh API Kriptografi Web, yang menawarkan rawak yang lebih selamat.
Atas ialah kandungan terperinci Kuasai Penjanaan Nombor Rawak JavaScript: Panduan untuk Math.random() dan Seterusnya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!