Kuasai Penjanaan Nombor Rawak JavaScript: Panduan untuk Math.random() dan Seterusnya

Susan Sarandon
Lepaskan: 2024-11-04 06:12:02
asal
354 orang telah melayarinya

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond
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!

Asas Menjana Nombor Rawak dalam JavaScript

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
Salin selepas log masuk
Salin selepas log masuk

Ini akan memberikan output seperti ini, jika kami menjalankan program pada sistem kami:

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

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.

Menjana Nombor Rawak dalam Julat

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
Salin selepas log masuk
Salin selepas log masuk

Ini akan memberikan output seperti:

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

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).

Menjana Integer Rawak dalam Julat

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
Salin selepas log masuk
Salin selepas log masuk

Apabila kita menjalankan kod ini, kita akan mendapat output yang serupa seperti ini:

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

Di sini, Math.floor() membundarkan ke bawah kepada integer terdekat, memastikan hasilnya ialah integer dalam julat [min, maks].

Menjana Boolean Rawak

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
Salin selepas log masuk

Kami akan mendapat output yang serupa seperti ini, apabila kami akan menjalankan kod:

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

Menjana Nilai Rawak daripada Tatasusunan

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
Salin selepas log masuk
Salin selepas log masuk

Sekarang, ini akan memberi kita sebarang unsur rawak daripada tatasusunan seperti ini, apabila kita menjalankan program:

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

Mengocok Array

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
Salin selepas log masuk
Salin selepas log masuk

Sekarang, apabila kita akan menjalankan program, ia akan memberikan kita tatasusunan yang dikocok seperti ini:

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

Penjanaan UUID rawak

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
Salin selepas log masuk
Salin selepas log masuk

Jadi, apabila kita menjalankan program ini, ia akan menghasilkan UUID rawak seperti ini:

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

Kesimpulan

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!!

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond


Soalan Lazim

Adakah Math.random() benar-benar rawak?

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.

Bolehkah saya menetapkan benih untuk Math.random() dalam JavaScript?

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.

Mengapa Math.random() mengembalikan nombor antara 0 dan 1, bukannya julat yang lebih besar?

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.

Adakah terdapat sebarang kebimbangan prestasi dengan menggunakan Math.random() dengan kerap?

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.

Bolehkah Math.random() digunakan untuk tujuan kriptografi?

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan