Pembangkit bilangan acak dalam JavaScript dalam rentang tertentu?
Bagaimana saya dapat menghasilkan bilangan acak antara dua ditentukan variabel-variabel dalam JavaScript, misal x = 4
dan y = 8
akan output dari setiap4, 5, 6, 7, 8
?
1823
32
Ada beberapa contoh di Mozilla Developer Network halaman:
Berikut ini's logika di balik itu. It's sederhana aturan tiga:
Matematika.random()
mengembalikanNomor
antara 0 (inklusif) dan 1 (eksklusif). Jadi kita memiliki interval seperti ini:Sekarang, kita'd seperti nomor antara
min
(inklusif) danmax
(exclusive):Kita dapat menggunakan Matematika.random
untuk mendapatkan koresponden di [min, max) interval. Tetapi, pertama kita harus factor sedikit masalah dengan mengurangkan
min` dari interval kedua:Hal ini memberikan:
Kita sekarang dapat menerapkan Matematika.random` dan kemudian menghitung koresponden. Let's memilih nomor acak:
Jadi, dalam rangka untuk menemukan
x
, akan kami lakukan:Don't lupa untuk menambahkan
min
kembali, sehingga kita mendapatkan nomor dalam [min, max) interval:Yang pertama adalah fungsi dari MDN. Yang kedua, mengembalikan sebuah integer antara
min
danmax
, kedua inklusif.Sekarang untuk mendapatkan bilangan bulat, anda bisa menggunakan
bulat
,l
ataulantai
.Anda bisa menggunakan
Matematika.round(Math.random() * (max - min)) + min
, namun ini memberikan non-bahkan distribusi. Kedua,min
danmax
hanya memiliki sekitar setengah kesempatan untuk roll:Dengan
max
dikecualikan dari interval, ia memiliki kesempatan bahkan kurang untuk roll darimin
.Dengan Matematika.floor(Math.random() * (max - min +1)) + min` anda memiliki sempurna bahkan distribusi.
Anda dapat't menggunakan
ceil()
dan-1
dalam persamaan itu karenamax
sekarang memiliki lebih sedikit kesempatan untuk roll, tapi anda dapat roll (yang tidak diinginkan)min-1
hasilnya juga.Matematika.random()
Dari Mozilla Pengembang Jaringan dokumentasi:
Berguna contoh:
penggunaan:
Kembali nomor acak antara 1 dan 10:
Kembali nomor acak antara 1 dan 100:
Alternatif jika anda menggunakan Underscore.js anda dapat menggunakan
Jika anda membutuhkan variabel antara 0 dan max yang dapat anda gunakan:
Lain jawaban don't account untuk sangat wajar parameter
0
dan1
. Sebaliknya anda harus menggunakanbulat
bukan daril
ataulantai
:Berikut ini adalah MS DotNet Pelaksanaan Random class di javascript-
Gunakan fungsi ini untuk mendapatkan angka acak antara yang diberikan berkisar
Setelah menghasilkan nomor acak dengan menggunakan program komputer, hal ini masih dianggap sebagai nomor acak jika memilih nomor merupakan bagian atau salah satu dari yang awal. Tapi jika itu berubah, maka matematika tidak menerima itu sebagai sebuah nomor acak dan mereka dapat menyebutnya bias nomor. Tetapi jika anda sedang mengembangkan sebuah program untuk tugas sederhana, ini tidak akan menjadi kasus untuk dipertimbangkan. Tetapi jika anda sedang mengembangkan sebuah program untuk menghasilkan nomor acak untuk barang-barang berharga seperti program undian, atau permainan judi, maka program anda akan ditolak oleh manajemen jika anda tidak mempertimbangkan tentang kasus di atas.
Jadi untuk orang-orang semacam orang, di sini adalah saran saya:
Menghasilkan nomor acak dengan menggunakan Matematika.random()
.(katakanlah ini
n`)Jika anda tahu cara membaca tabel nomor acak memilih nomor acak, anda tahu proses di atas(mengalikannya dengan 1, 10, 100 dan seterusnya) tidak melanggar salah satu yang saya sebutkan di awal.( Karena perubahan hanya untuk tempat titik desimal.)
Mempelajari contoh berikut dan mengembangkannya untuk kebutuhan anda.
Jika anda membutuhkan sampel [0,9] kemudian lantai n10 adalah jawaban anda dan jika perlu [0,99] kemudian lantai n100 adalah jawaban anda dan sebagainya.
Sekarang mari masuk ke peran anda:
Anda've meminta angka di antara rentang tertentu. (Dalam hal ini anda bias antara kisaran tersebut. - Dengan mengambil jumlah dari [1,6] dengan gulungan mati, maka anda bias ke [1,6] tapi masih acak jika dan hanya jika mati tidak bias.)
Jadi pertimbangkan range ==> [78, 247] jumlah elemen dari berbagai = 247 - 78 + 1 = 170; (karena kedua batas-batas yang inklusif.
Untuk sembarang bilangan bulat dengan jangkauan, cobalah:
Aku tahu pertanyaan ini sudah dijawab tapi jawaban saya bisa membantu seseorang.
Saya menemukan metode sederhana ini di W3Schools:
Berharap ini akan membantu seseorang.
Untuk mendapatkan nomor acak yang mengatakan antara 1 dan 6, pertama lakukan:
Ini mengalikan nomor acak oleh 6 dan kemudian menambahkan 0,5 itu. Putaran berikutnya jumlah bilangan bulat positif dengan melakukan:
Putaran ini jumlah ke seluruh nomor terdekat.
Atau untuk membuatnya lebih mudah dimengerti melakukan hal ini:
Secara umum kode untuk melakukan hal ini menggunakan variabel adalah:
Alasan untuk mengambil 0.5 dari nilai minimum adalah karena menggunakan nilai minimum saja akan memungkinkan anda untuk mendapatkan sebuah bilangan bulat yang merupakan salah satu lebih dari nilai maksimum. Dengan mengambil 0.5 dari nilai minimum anda pada dasarnya mencegah nilai maksimum dari yang dibulatkan.
Harapan yang membantu.
Menggunakan kode berikut anda dapat menghasilkan array dari angka acak, tanpa mengulang, dalam rentang tertentu.
Untuk menguji fungsi ini, dan variasi dari fungsi ini, simpan kode di bawah ini di HTML/JavaScript ke file dan buka dengan browser. Kode tersebut akan menghasilkan grafik menunjukkan distribusi dari satu juta panggilan fungsi. Kode juga akan merekam edge kasus-kasus, sehingga jika fungsi menghasilkan nilai lebih besar dari maks, atau kurang dari satu menit, anda.akan.tahu.tentang.itu.
Random seluruh jumlah antara terendah dan tertinggi:
Bukan solusi yang paling elegan.. tapi sesuatu yang cepat.
Berikut ini's apa yang saya gunakan untuk menghasilkan angka acak.
Kita lakukan mengeksekusi tinggi
++
karenaMatematika.random()
menghasilkan nomor acak antara 0, (inklusif), dan 1(eksklusif) salah satu Yang dikecualikan, artinya kita harus meningkatkan tinggi per satu sebelum mengeksekusi matematika. Kami kemudian kurangi rendah dari tinggi, memberikan jumlah tertinggi untuk menghasilkan rendah, maka +rendah, tinggi membawa kembali normal, dan membuat jumlah terendah minimal rendah. kemudian kita kembali jumlah yang dihasilkanrandom(7,3)
bisa kembali3,4,5,6, atau 7
Berikut adalah contoh dari sebuah fungsi javascript yang dapat menghasilkan nomor acak dari setiap panjang tertentu tanpa menggunakan Matematika.random():
Uint8Array membuat array diisi dengan jumlah hingga 3 digit yang akan menjadi maksimal 999. Kode ini sangat pendek.