updated December 21, 2024136 views

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ữa maxmin, 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ộng min 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.