Pertanyaan Hasilkan angka acak antara dua angka dalam JavaScript


Apakah ada cara untuk menghasilkan angka acak dalam rentang tertentu (misalnya dari 1 hingga 6: 1, 2, 3, 4, 5, atau 6) dalam JavaScript?


1243
2018-02-10 16:41


asal


Jawaban:


Jika Anda ingin mendapatkan antara 1 dan 6, Anda akan menghitung:

Math.floor(Math.random() * 6) + 1  

Dimana:

  • 1 adalah nomor awal
  • 6 adalah jumlah kemungkinan hasil (1 + awal (6) - akhir (1))

1540
2018-02-10 16:45



function randomIntFromInterval(min,max)
{
    return Math.floor(Math.random()*(max-min+1)+min);
}

Apa yang dilakukannya "ekstra" adalah memungkinkan interval acak yang tidak dimulai dengan 1. Jadi Anda bisa mendapatkan nomor acak dari 10 hingga 15 misalnya. Fleksibilitas.


1660
2017-08-29 09:25



Math.random ()

Dari Mozilla Dokumentasi Jaringan Pengembang:

// Returns a random integer between min (include) and max (include)

Math.floor(Math.random() * (max - min + 1)) + min;

Contoh yang bermanfaat:

// 0 -> 10
Math.floor(Math.random() * 11);

// 1 -> 10
Math.floor(Math.random() * 10) + 1;

// 5 -> 20
Math.floor(Math.random() * 16) + 5;

// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;

189
2018-06-11 00:23



Solusi lain:

  • (Math.random() * 6 | 0) + 1
  • ~~(Math.random() * 6) + 1

75
2017-11-09 10:08



The Math.random () mengembalikan fungsi floating-point, pseudo-random   angka dalam kisaran [0, 1); yaitu dari 0 (inklusif) hingga tetapi tidak   termasuk 1 (eksklusif)

Mari kita add itu min  randomly dari 0 untuk max-min

Kasus 0

min + 0 * (max-min) = mnt

Kasus 1

min + 1 * (max-min) = maks

Kasus Acak menggunakan Math.random 0 <= r <1

min + r * (max-min) = X, dimana X memiliki jangkauan mnt <= X < maks

Hasilnya di atas X adalah angka acak. Namun karena Math.random () batas kiri kami bersifat inklusif, dan batas yang benar adalah eksklusif. Untuk memasukkan batas hak kami, kami meningkatkan batas yang tepat dengan 1 dan lantai hasilnya.

function generateRandomInteger(min, max) {
  return Math.floor(min + Math.random()*(max+1 - min))
}

Untuk mendapatkan nomor acak

generateRandomInteger(-20, 20);


28
2018-04-03 11:45



var x = 6; // can be any number
var rand = Math.floor(Math.random()*x) + 1;

15
2018-02-10 16:46



Atau, di Menggarisbawahi

_.random(min, max)

14
2017-10-03 01:52



jsfiddle: https://jsfiddle.net/cyGwf/477/

Integer Acak: untuk mendapatkan bilangan bulat acak antara min dan max, gunakan kode berikut

function getRandomInteger(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min;
}

Nomor Titik Mengambang Acak: untuk mendapatkan nomor floating point acak antara min dan max, gunakan kode berikut

function getRandomFloat(min, max) {
  return Math.random() * (max - min) + min;
}

Referensi: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random


13
2018-01-25 04:33