Show Apakah ada cara untuk menghasilkan angka acak dalam rentang yang ditentukan (misalnya dari 1 hingga 6: 1, 2, 3, 4, 5, atau 6) dalam JavaScript? Jawaban: PentingKode berikut
hanya berfungsi jika nilai minimumnya adalah Jika Anda ingin mendapatkan bilangan bulat acak antara 1 ( dan hanya 1 ) dan 6, Anda akan menghitung:
Dimana:
Apa yang ia lakukan "ekstra" adalah itu memungkinkan interval acak yang tidak dimulai dengan 1. Jadi Anda bisa mendapatkan nomor acak dari 10 hingga 15 misalnya. Fleksibilitas. Math.random ()Mengembalikan angka acak bilangan bulat antara min ( termasuk ) dan maks ( termasuk ):
Atau angka acak antara min ( termasuk ) dan maks ( tidak termasuk ):
Contoh berguna (bilangan bulat):
** Dan selalu senang diingatkan (Mozilla):
Solusi lain:
Coba online TL; DR
Untuk mendapatkan nomor acak PENJELASAN DI BAWAH INI Kita perlu mendapatkan integer acak, misalkan X antara min dan maks. Baik? yaitu min <= X <= maks Jika kita mengurangi min dari persamaan, ini sama dengan 0 <= (X - mnt) <= (Maks - mnt) Sekarang, mari kita gandakan ini dengan angka acak r yang 0 <= (X - mnt) * r <= (maks - mnt) * r Sekarang, mari tambahkan kembali min ke persamaan min <= min + (X - min) * r <= min + (maks - min) * r Sekarang, mari kita pilih fungsi yang menghasilkan r sehingga memenuhi rentang persamaan kita sebagai [min, maks]. Ini hanya mungkin jika 0 <= r <= 1 BAIK. Sekarang, kisaran r yaitu [0,1] sangat mirip dengan hasil fungsi Math.random (). Bukan?
Sebagai contoh, Kasus r = 0
Kasus r = 1
Kasus Acak menggunakan Math.random 0 <= r <1
Hasil di atas X adalah angka acak. Namun karena Math.random () batas kiri kami inklusif, dan batas kanan eksklusif. Untuk memasukkan batas kanan kami, kami menambah batas kanan 1 dan lantai hasilnya.
Untuk mendapatkan nomor acak
Matematika bukanlah kelebihan saya, tetapi saya telah mengerjakan sebuah proyek di mana saya perlu menghasilkan banyak angka acak antara positif dan negatif.
Misalnya
Tentu saja, Anda juga dapat menambahkan beberapa validasi untuk memastikan Anda tidak melakukan ini dengan selain angka. Pastikan juga bahwa min selalu kurang dari atau sama dengan maks. Saya menulis fungsi yang lebih fleksibel yang dapat memberi Anda nomor acak tetapi tidak hanya bilangan bulat.
Versi tetap. Contoh Kembalikan angka acak antara 1 dan 10:
Hasilnya bisa: Coba sendiri: di sini - atau menggunakan lodash / undescore:
Docs: - lodash - undescore Terlepas dari banyak jawaban dan hasil yang hampir sama. Saya ingin menambahkan jawaban saya dan menjelaskan cara kerjanya. Karena itu penting untuk memahami kerjanya daripada menyalin menyisipkan satu kode baris. Menghasilkan angka acak hanyalah matematika sederhana. KODE:
Saya sedang mencari generator nomor acak yang ditulis dalam TypeScript dan saya telah menulis ini setelah membaca semua jawaban, berharap ini akan bekerja untuk coders TypeScript.
Dalam kasus seperti itu, kita dapat menggunakan Untuk memperjelas masalah distribusi bias, pertimbangkan kasus di mana kami ingin menghasilkan nilai antara 1 dan 5, tetapi kami memiliki generator angka acak yang menghasilkan nilai antara 1 dan 16 (nilai 4-bit). Kami ingin memiliki jumlah yang sama dari pemetaan nilai yang dihasilkan untuk setiap nilai output, tetapi 16 tidak dibagi rata dengan 5: ia meninggalkan sisa dari 1. Jadi kita perlu menolak 1 dari nilai yang mungkin dihasilkan, dan hanya melanjutkan ketika kita mendapatkan salah satu dari 15 nilai lebih rendah yang dapat dipetakan secara seragam ke dalam kisaran target kami. Perilaku kita bisa terlihat seperti kodesemu ini:
Kode berikut menggunakan logika yang sama, tetapi menghasilkan bilangan bulat 32-bit sebagai gantinya, karena itulah ukuran bilangan bulat umum terbesar yang dapat diwakili oleh
Menambahkan
begitu:
dan untuk jawaban int
Nomor integer acak crypto-kuat dalam rentang [a, b] (asumsi: a <b)
Ini seharusnya bekerja:
Saya menemukan cara baru yang hebat untuk melakukan ini menggunakan parameter default ES6. Ini sangat bagus karena memungkinkan satu argumen atau dua argumen. Ini dia:
Ini terlambat sekitar sembilan tahun, tetapi randojs.com menjadikan ini satu kalimat sederhana:
Anda hanya perlu menambahkan ini ke kepala dokumen html Anda, dan Anda dapat melakukan apa saja yang Anda inginkan dengan mudah secara acak. Nilai acak dari array, elemen jquery acak, properti acak dari objek, dan bahkan mencegah pengulangan jika diperlukan.
Ini berfungsi untuk saya dan menghasilkan nilai-nilai seperti fungsi library standar random.randint Python :
Coba gunakan:
mengembalikan 1-6 seperti dadu pada dasarnya,
|