Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Số ngẫu nhiên trong Java: Hướng dẫn cho người mới bắt đầu

Cách tạo số ngẫu nhiên trong Java

5. 7. 22. Với con người, tạo số ngẫu nhiên rất dễ dàng. Chỉ cần tự hỏi mình một con số, và nó sẽ hiện ra trong tâm trí.

Nếu chỉ dễ dàng như vậy trong lập trình thì tốt biết mấy. Trong Java, tạo số ngẫu nhiên dễ dàng, nếu bạn biết cách.

Trong hướng dẫn này, chúng ta sẽ thảo luận ba cách bạn có thể dùng để tạo số ngẫu nhiên. Chúng ta sẽ đi qua ví dụ của từng phương pháp trong bối cảnh trò chơi đoán số.

Tạo số ngẫu nhiên

Chúng ta đều từng chơi những trò chơi yêu cầu đoán số tại một thời điểm nào đó. Một số thậm chí còn trao giải thưởng nếu bạn đoán đúng. Cho hướng dẫn này, chúng ta sẽ tạo trò chơi đoán số trong Java.

Bước đầu tiên, tất nhiên, là tạo số ngẫu nhiên. Không có số ngẫu nhiên, trò chơi của chúng ta sẽ không vui. Hãy đi qua từng trong ba phương pháp chúng ta có thể dùng để làm điều này.

Sử dụng lớp Random

Java có lớp tiện lợi tên "Random" mà bạn có thể dùng để tạo số ngẫu nhiên. Chúng ta sẽ bắt đầu trò chơi đoán số bằng cách dùng lớp java.util.Random tạo luồng số ngẫu nhiên:

import java.util.Random; class Main { public static void main(String args[]) { Random random_number_generator = new Random(); int random_number = random_number_generator.nextInt(25); System.out.println(random_number); } }

Khi chạy lớp này ba lần, ba số ngẫu nhiên được tạo:

22 15 19

Chúng ta bắt đầu bằng việc import lớp java.util.Random. Sau đó, chúng ta tạo một thể hiện (instance) của lớp này tên "random_number_generator". Dùng thể hiện này, chúng ta có thể tạo số ngẫu nhiên.

Phương thức nextInt() cho phép chúng ta tạo số ngẫu nhiên trong khoảng từ 0 đến một số chỉ định khác. Ở trên, chúng ta chỉ định số 25. Nghĩa là tất cả số trình tạo của chúng ta trả về sẽ nằm giữa 0 và 25.

Sử dụng Math.random()

Phương thức Math.random() cần một chút công sức hơn để dùng, nhưng nó vẫn là cách tốt để tạo số ngẫu nhiên. Hãy tạo trình tạo số ngẫu nhiên dùng Math.random():

class Main { public static void main(String args[]) { int small = 0; int large = 25; int random_number = (int)(Math.random() * (large - small + 1) + small); System.out.println(random_number); } }

Math.random() có sẵn trong Java. Nghĩa là chúng ta không cần import nó trong mã.

Chúng ta bắt đầu bằng khai báo hai biến. "small" chỉ định giới hạn dưới mà không số nào nên được tạo ra dưới đó; "large" là giới hạn trên mà không số nào nên được tạo ra trên đó.

Chúng ta đã dùng công thức để tạo số ngẫu nhiên. Điều này là vì Math.random() bản thân nó không trả về số nguyên ngẫu nhiên. Phương thức Math.random trả về số ngẫu nhiên giữa 0.0 và 1.0. Chúng ta phải dùng công thức trên để chuyển nó thành số nguyên trong phạm vi của chúng ta.

Khi chạy mã ba lần, ba số ngẫu nhiên được tạo:

2 1 9

Sử dụng ThreadLocalRandom

ThreadLocalRandom là lớp bạn có thể dùng để tạo số ngẫu nhiên.

Lớp này tốt nhất khi bạn muốn tạo nhiều số ngẫu nhiên song song. Điều này thường xảy ra trong môi trường đa luồng (multi-threading). 

Hãy tạo trình tạo số ngẫu nhiên dùng phương pháp này:

import java.util.concurrent.ThreadLocalRandom; class Main { public static void main(String args[]) { int small = 0; int large = 25; ThreadLocalRandom random_number_generator = ThreadLocalRandom.current(); int random_number = random_number_generator.nextInt(small, large); System.out.println(random_number); } }

Chúng ta bắt đầu bằng import thư viện ThreadLocalRandom chứa lớp chúng ta dùng để tạo số ngẫu nhiên. Sau đó chúng ta chỉ định hai biến đặt giới hạn dưới và trên cho trình tạo số ngẫu nhiên.

Chúng ta khai báo biến random_number_generator tham chiếu đến lớp ThreadLocalRandom. Chúng ta dùng phương thức nextInt() và chỉ định biến "small" và "large" như đối số để tạo số ngẫu nhiên.

Thực thi chương trình ba lần trả về ba số ngẫu nhiên:

4 23 15

Bây giờ chúng ta sẵn sàng để xây dựng phần còn lại của trò chơi đoán số.

Tạo logic đoán (Guess Logic)

Chúng ta giờ biết cách tạo số ngẫu nhiên. Bước tiếp theo xây dựng trò chơi là tạo logic cho phép người dùng đoán số ngẫu nhiên.

Bạn có thể dùng bất kỳ ví dụ nào ở trên với mã này để làm cho nó hoạt động. Tên biến trong đoạn mã của chúng ta đã được thiết lập để tương thích với ví dụ dưới đây.

Hãy bắt đầu bằng dùng lớp "Scanner" để yêu cầu người dùng đoán số:

import java.util.Scanner; class Main { public static void main(String[] args) { // Guessing code goes here Scanner guess = new Scanner(System.in); System.out.println("Guess a number between 1 and 25: "); int user_guess = guess.nextInt(); } }

Mã này yêu cầu người dùng "Guess a number between 1 and 25: ". Giá trị người dùng nhập vào console Java sẽ được lưu làm biến "user_guess".

Chúng ta sẽ viết câu lệnh if kiểm tra xem số người dùng đoán có bằng số chương trình tạo ra không:

... if (user_guess == random_number) { System.out.println("You have correctly guessed the number!"); } else { System.out.println("Your guess is incorrect!"); }

Hãy chạy chương trình và nhập số giữa 1 và 25:

Guess a number between 1 and 25: 7 Your guess is incorrect!

Nếu chúng ta đoán đúng số, chương trình trả về:

Guess a number between 1 and 25: 9 You have correctly guessed the number!

Với chỉ vài dòng mã, chúng ta đã tạo thành công trò chơi tạo số ngẫu nhiên để đoán.

Kết luận

Số ngẫu nhiên có nhiều ứng dụng trong lập trình. Trong ví dụ này, chúng ta đã đi qua cách số ngẫu nhiên có thể dùng với trò chơi đoán số.

Có ba phương pháp bạn có thể dùng để tạo số ngẫu nhiên:

  • Dùng lớp Random
  • Dùng phương thức built-in Math.random()
  • Dùng lớp ThreadLocalRandom

Bạn đang tìm thử thách? Thay đổi mã trò chơi đoán để có thể đoán nhiều lần.