Java là một trong những ngôn ngữ phát triển phần mềm hữu ích nhất nhờ các tính năng tích hợp của nó. Do sở hữu những tính năng phong phú này, Java là một trong những ngôn ngữ bao gồm phần lớn ứng dụng phần mềm cấp doanh nghiệp.
Java có nhiều lớp hỗ trợ gần như tất cả các tính năng phát triển ứng dụng cơ bản. Các lớp chuỗi cung cấp khả năng thao tác chuỗi mà không cần phải viết các hàm thao tác chuỗi dưới dạng bit và mảnh.
Tương tự, lớp Toán trong Java cung cấp hỗ trợ để thực hiện các hàm toán học. Một lớp cực kỳ quan trọng và thú vị khác được sử dụng để tạo các số giả ngẫu nhiên là lớp Java Random.
Vậy lớp Java ngẫu nhiên có gì đặc biệt, mời bạn đọc tham khảo nội dung bài viết mà Box.edu chia sẻ.
Mục lục bài viết
Tại sao lớp Java ngẫu nhiên lại quan trọng
Một ứng dụng phần mềm thường cần thực hiện một nhiệm vụ một cách ngẫu nhiên dựa trên một số giá trị được tạo ngẫu nhiên.
Ví dụ, trong một trò chơi bài, nhà chủ ván bài yêu cầu xáo trộn ngẫu nhiên bộ bài và sau đó phân chia ngẫu nhiên các quân bài đó cho người chơi.
Một ứng dụng phần mềm điển hình khác sử dụng số ngẫu nhiên là ứng dụng xổ số.Trong đó một số được tạo ngẫu nhiên bởi một ứng dụng phần mềm dựa trên thuật toán và một người có số trùng với số được tạo ngẫu nhiên sẽ thắng.
Các ví dụ trên chỉ là hai trong số hàng nghìn ứng dụng của các số ngẫu nhiên; tuy nhiên hai ví dụ này đủ để giải thích tại sao việc tạo số ngẫu nhiên lại quan trọng đến mức các nhà phát triển Java đã dành riêng một lớp đầy đủ cho nó.
Lớp Java ngẫu nhiên được các nhà phát triển Java khởi tạo để phục vụ cho việc lập trình
Lớp Java ngẫu nhiên là gì?
Trong ngôn ngữ Java, lớp Random được sử dụng để tạo các số ngẫu nhiên bằng nhiều phương thức. Lớp Random nằm trong gói java.util và được khởi tạo bằng từ khóa “new” bằng cách gọi một hàm tạo của lớp Random.
Lớp Random chứa một số phương thức trả về các số nguyên giả ngẫu nhiên, nhân đôi, Boolean, byte, float, long và các giá trị kiểu Gaussian.
Ví dụ minh họa về lớp Java ngẫu nhiên
Ví dụ: Tạo 50 số ngẫu nhiên từ 0-20 bằng phương pháp Nextlnt của lớp Random.
Phương pháp Nextlnt
Code
import java.util.Random;
public class MyClass {
public static void main(String[] args) {
int RandomNumbers = 50;
Random num = new Random();
for ( int i=0; i<RandomNumbers; i++ )
{
int randomnum = num.nextInt(20);
System.out.format("Random Number: %2d, Value = %d\n", i+1, randomnum );
}
}
}
Trong đoạn mã trên, trước tiên, lớp Java ngẫu nhiên đã được nhập vào ứng dụng bằng cách nhập lớp java.util.Random.
Trong phương thức chính của lớp MyClass, một biến số nguyên có tên là RandomNumbers đã được khởi tạo thành 50. Số này đại diện cho tổng số các số được tạo ngẫu nhiên.
Tiếp theo, một đối tượng của lớp Java ngẫu nhiên có tên num đã được tạo bằng cách gọi hàm khởi tạo của lớp Ngẫu nhiên.
Sau đó, một vòng lặp for đã được thực hiện sẽ lặp lại 50 lần và mỗi lần lặp lại lần đầu tiên nó sẽ gọi phương thức nextInt trên đối tượng num của lớp Random.
Phương thức nextInt của lớp Java nhận tham số kiểu số nguyên, là giới hạn trên của số ngẫu nhiên được tạo.
Trong ví dụ trên, bên trong phương thức nextInt (20) của vòng lặp for đang được gọi. Phương thức này sẽ trả về giá trị kiểu số nguyên giữa 0 (bao gồm) và 20 (loại trừ). Sau đó, số được tạo ngẫu nhiên trả về sẽ được in trên màn hình bảng điều khiển.
Đầu ra sẽ chứa 50 số được tạo ngẫu nhiên từ 0 đến 20. Một ví dụ về đầu ra của mã trên đã được hiển thị ở đây:
- Số ngẫu nhiên: 1, Giá trị = 6
- Số ngẫu nhiên: 2, Giá trị = 1
- Số ngẫu nhiên: 3, Giá trị = 6
- Số ngẫu nhiên: 4, Giá trị = 5
- Số ngẫu nhiên: 5, Giá trị = 9
- Số ngẫu nhiên: 6, Giá trị = 15
- Số ngẫu nhiên: 7, Giá trị = 5
.
.
.
.
.
.
.
- Số ngẫu nhiên: 46, Giá trị = 2
- Số ngẫu nhiên: 47, Giá trị = 15
- Số ngẫu nhiên: 48, Giá trị = 19
- Số ngẫu nhiên: 49, Giá trị = 4
- Số ngẫu nhiên: 50, Giá trị = 2
Tìm hiểu phương thức NextDouble và NextFloat
Giống như phương thức nextInt, được sử dụng để tạo ngẫu nhiên các số nguyên, phương thức nextDouble và nextFloat được sử dụng để tạo ngẫu nhiên các giá trị kiểu động và kiểu kép trong khoảng từ 0,0 đến 1,0 (Cả hai đều loại trừ).
Ví dụ tiếp theo minh họa cách các giá trị float và double có thể được tạo ngẫu nhiên thông qua các phương thức nextFloat và nextDouble tương ứng.
Code:
import java.util.Random;
public class MyClass {
public static void main(String[] args) {
// run 20 random examples
int RandomNumbers = 50;
// create a new Java Random object
Random num = new Random();
for ( int i=0; i<RandomNumbers; i++ )
{
double randomnum = num.nextDouble();
float randomfloat = num.nextFloat();
String randval = Double.toString(randomnum);
String ranfloat = Float.toString(randomfloat);
System.out.println(randval +" "+ranfloat);
}
}
}
Với ví dụ này, bên trong vòng lặp for, các phương thức nextDouble và nextFloat đã được gọi trên đối tượng kiểu ngẫu nhiên num. Cả hai phương thức này đều trả về lần lượt là double và float. Các giá trị kiểu double và float này sau đó đã được chuyển đổi thành chuỗi bằng cách gọi toString.
Các biến kiểu kép và kiểu float được tạo ngẫu nhiên sẽ được hiển thị trong đầu ra dưới dạng hai cột, trong đó cột đầu tiên sẽ chứa các giá trị nhân đôi được tạo ngẫu nhiên từ 0,0 đến 1,0 và cột thứ hai sẽ chứa các biến kiểu float giữa 0,0 và 1,0. Đầu ra sẽ giống như sau:
0,3251923685126039 0,39124447
0,8417402842597117 0,97791207
0,8933219245951466 0,6809344
.
.
0,00851098126473604 0,34304357
0,09477491159121731 0,19681299
0,04435399934598483 0,45021433
0,05663012451696958 0,38286084
0,9044211133780354 0,6423508
0,4395832582241389 0,0999071
Vòng lặp sẽ thực hiện 50 lần, do đó 50 trường như vậy sẽ xuất hiện trong đầu ra. Tuy nhiên, đầu ra ở trên chỉ chứa một phần tóm tắt của đầu ra để xây dựng khái niệm.
Các phương thức quan trọng khác của lớp Random Java là các phương thức nextBoolean và nextLong sẽ trả về các giá trị kiểu Boolean và Long được tạo ngẫu nhiên tương ứng.
Phương thức NextDouble và NextFloat có gì khác biệt
Tổng kết
Như vậy thông qua bài viết trên đây, Box.edu đã cùng bạn tìm hiểu về lớp Java ngẫu nhiên và các ví dụ minh họa. Nếu bạn muốn học Java để theo đuổi con đường trở thành một lập trình viên trong tương lai thì nhất định không nên bỏ lỡ bài viết mà chúng tôi đã chia sẻ nhé.
Cảm ơn và chúc các bạn thành công!