Trong JavaScript, việc tạo số ngẫu nhiên là một nhu cầu phổ biến, đặc biệt trong các ứng dụng liên quan đến trò chơi, mô phỏng, hoặc xử lý dữ liệu. JavaScript cung cấp hàm Math.random()
để thực hiện việc này. Tuy nhiên, Math.random()
chỉ trả về một số thập phân ngẫu nhiên trong khoảng từ 0 (bao gồm) đến 1 (không bao gồm). Vậy làm thế nào để tạo ra số nguyên ngẫu nhiên trong một phạm vi cho trước? Bài viết này sẽ giải đáp thắc mắc đó.
Hàm Math.random()
cơ bản
Hàm Math.random()
trả về một số thực dấu phẩy động, lớn hơn hoặc bằng 0 và nhỏ hơn 1. Để minh họa, hãy xem ví dụ sau:
console.log(Math.random()); // Ví dụ: 0.3456789
console.log(Math.random()); // Ví dụ: 0.9876543
console.log(Math.random()); // Ví dụ: 0.1234567
Mỗi lần gọi Math.random()
, bạn sẽ nhận được một giá trị khác nhau.
Tạo số nguyên ngẫu nhiên trong một phạm vi
Để tạo số nguyên ngẫu nhiên trong một phạm vi nhất định (ví dụ từ min
đến max
bao gồm cả hai), chúng ta cần kết hợp Math.random()
với một số phép toán khác. Dưới đây là một cách tiếp cận phổ biến và hiệu quả:
function getRandomInt(min, max) {
min = Math.ceil(min); // Làm tròn lên số nguyên gần nhất
max = Math.floor(max); // Làm tròn xuống số nguyên gần nhất
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// Ví dụ sử dụng:
console.log(getRandomInt(1, 10)); // Số ngẫu nhiên từ 1 đến 10
console.log(getRandomInt(10, 20)); // Số ngẫu nhiên từ 10 đến 20
console.log(getRandomInt(-5, 5)); // Số ngẫu nhiên từ -5 đến 5
Giải thích
max - min + 1
Tính khoảng cách giữamax
vàmin
, cộng thêm 1 để bao gồm cảmax
.Math.random() * (max - min + 1)
Tạo một số thập phân ngẫu nhiên trong khoảng từ 0 đến(max - min + 1)
.Math.floor(...)
Làm tròn xuống số nguyên gần nhất để đảm bảo kết quả là một số nguyên.+ min
Cộngmin
vào kết quả để dịch chuyển phạm vi về đúng giá trị mong muốn.
Ví dụ nâng cao (ES6 Arrow Function)
Bạn cũng có thể viết hàm này bằng cú pháp ES6 arrow function cho ngắn gọn hơn
const getRandomIntArrow = (min, max) => {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
};
console.log(getRandomIntArrow(1, 100)); // Số ngẫu nhiên từ 1 đến 100
Kết luận
Việc tạo số ngẫu nhiên trong JavaScript rất đơn giản với sự hỗ trợ của Math.random()
. Bằng cách kết hợp nó với các phép toán và hàm làm tròn, chúng ta có thể dễ dàng tạo ra số nguyên ngẫu nhiên trong bất kỳ phạm vi nào. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức hữu ích.