Tạo số ngẫu nhiên trong Java

0
22


Tạo một chuỗi số ngẫu nhiên là một trong những nhiệm vụ phổ biến thỉnh thoảng xuất hiện. Trong Java , nó có thể đạt được một cách đơn giản bằng cách sử dụng lớp java.util.Random.

Bước đầu tiên, như với việc sử dụng bất kỳ lớp API nào , là đặt câu lệnh nhập trước khi bắt đầu lớp chương trình của bạn:

Tiếp theo, tạo một đối tượng ngẫu nhiên:

Đối tượng Random cung cấp cho bạn một trình tạo số ngẫu nhiên đơn giản. Các phương thức của đối tượng cung cấp khả năng chọn các số ngẫu nhiên. Ví dụ: các phương thức nextInt() và nextLong() sẽ trả về một số nằm trong phạm vi giá trị (âm và dương) của kiểu dữ liệu int và long tương ứng:

Các số được trả về sẽ là các giá trị số nguyên dài được chọn ngẫu nhiên:

Chọn số ngẫu nhiên từ một phạm vi nhất định

Thông thường, các số ngẫu nhiên được tạo phải nằm trong một khoảng nhất định (ví dụ: từ 1 đến 40). Với mục đích này, phương thức nextInt() cũng có thể chấp nhận tham số int. Biểu thị giới hạn trên của dãy số. Tuy nhiên, số giới hạn trên không được bao gồm là một trong những số có thể được chọn. Điều đó nghe có vẻ khó hiểu, nhưng phương thức nextInt() hoạt động từ đầu. Ví dụ:

nó sẽ chỉ chọn một số ngẫu nhiên từ 0 đến 39. Để chọn từ một phạm vi bắt đầu bằng 1, chỉ cần thêm 1 vào kết quả của phương thức nextInt(). Ví dụ: để chọn một số bao gồm từ 1 đến 40, hãy thêm một vào kết quả:

Nếu phạm vi bắt đầu bằng một số lớn hơn một, bạn phải:

  • trừ số ban đầu của số giới hạn trên và sau đó thêm một.
  • thêm số bắt đầu vào kết quả của phương thức nextInt().

Ví dụ: để chọn một số bao gồm từ 5 đến 35, số cận trên sẽ là 35-5+1=31 và phải thêm 5 vào kết quả:

Làm thế nào ngẫu nhiên là lớp ngẫu nhiên?

Tôi nên chỉ ra rằng lớp Ngẫu nhiên tạo ra các số ngẫu nhiên một cách xác định. Thuật toán tạo ra tính ngẫu nhiên dựa trên một số gọi là hạt giống. Nếu biết số ban đầu, thì có thể tìm ra các số sẽ được tạo ra từ thuật toán. Để kiểm tra điều này, tôi sẽ sử dụng những con số kể từ ngày Neil Armstrong đặt chân lên Mặt trăng lần đầu tiên làm con số hạt giống của tôi (20 tháng 7 năm 1969):

Bất kể ai chạy mã này, chuỗi số “ngẫu nhiên” được tạo ra sẽ là:

Theo mặc định, số hạt giống bạn sử dụng:

là thời gian hiện tại tính bằng mili giây kể từ ngày 1 tháng 1 năm 1970. Điều này thường sẽ tạo ra các số đủ ngẫu nhiên cho hầu hết các mục đích. Tuy nhiên, hãy nhớ rằng hai trình tạo số ngẫu nhiên được tạo trong cùng một phần nghìn giây sẽ tạo ra các số ngẫu nhiên giống nhau.

Ngoài ra, hãy cẩn thận khi sử dụng lớp Ngẫu nhiên cho bất kỳ ứng dụng nào phải có bộ tạo số ngẫu nhiên an toàn (ví dụ: chương trình cờ bạc). Có thể đoán số hạt giống dựa trên thời gian chạy ứng dụng. Nói chung, đối với các ứng dụng mà số ngẫu nhiên là cực kỳ quan trọng, tốt hơn hết là tìm một giải pháp thay thế cho đối tượng Ngẫu nhiên. Đối với hầu hết các ứng dụng chỉ cần có một yếu tố ngẫu nhiên nhất định (ví dụ: xúc xắc cho trò chơi cờ bàn), nó hoạt động tốt.