Tạo số và chuỗi ngẫu nhiên trong Java

Huy Erick
Trong Java, việc tạo số và chuỗi ngẫu nhiên là một nhiệm vụ quan trọng trong việc xây dựng ứng dụng. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo số và chuỗi...

Trong Java, việc tạo số và chuỗi ngẫu nhiên là một nhiệm vụ quan trọng trong việc xây dựng ứng dụng. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo số và chuỗi ngẫu nhiên trong Java và áp dụng chúng vào các trường hợp thực tế.

Tạo số ngẫu nhiên

Khởi tạo Random Generator

Để tạo số ngẫu nhiên trong Java, chúng ta sử dụng class java.util.Random đã được tích hợp sẵn trong JDK. Để khởi tạo một trình tạo số ngẫu nhiên, chúng ta chỉ cần tạo một instance mới của Random.

Random generator = new Random();

Khi sử dụng trình tạo số ngẫu nhiên này, chúng ta có thể nhận thấy rằng các số ngẫu nhiên không thực sự là ngẫu nhiên, chúng chỉ là các chuỗi số có vẻ ngẫu nhiên. Khi tạo một generator, nó sẽ khởi tạo chuỗi của mình từ một giá trị được gọi là "seed". Tuy nhiên, chúng ta không thể kiểm soát hoặc đảm bảo rằng giá trị seed sẽ khác nhau trong các lời gọi khác nhau của constructor.

Chúng ta cũng có thể chỉ định một giá trị seed tùy ý để khởi tạo generator.

Random generator = new Random(19900828);

Sau khi đã có generator, chúng ta có thể sử dụng các phương thức nextXxx() để tạo các giá trị ngẫu nhiên, như nextInt(), nextLong(), nextFloat(), nextDouble(), và nextBoolean().

Ví dụ Random

Random generator = new Random();
System.out.println("Random Integer: " + generator.nextInt());
System.out.println("Random Long: " + generator.nextLong());
System.out.println("Random Float: " + generator.nextFloat());
System.out.println("Random Double: " + generator.nextDouble());
System.out.println("Random Boolean: " + generator.nextBoolean());

byte[] bytes = "gpcoder.com".getBytes();
System.out.println("Before Random Bytes : " + new String(bytes));

generator.nextBytes(bytes);
System.out.println("After Random Bytes : " + new String(bytes));

Chạy chương trình trên nhiều lần, mỗi lần bạn sẽ thấy kết quả khác nhau:

Random Integer: -2066769060
Random Long: -8130094582138669218
Random Float: 0.7775575
Random Double: 0.893498676660781
Random Boolean: false
Before Random Bytes : gpcoder.com
After Random Bytes : oyl͚��Iz

Ví dụ giới hạn giá trị Random Number

Đôi khi chúng ta cần tạo số ngẫu nhiên nằm trong một khoảng giá trị cụ thể. Chúng ta có thể làm điều này bằng cách sử dụng các phép toán đơn giản như nhân hoặc cộng thêm vào giá trị ngẫu nhiên.

Ví dụ: Chúng ta có một game có 4 người chơi, mỗi người có một số từ 1 đến 4. Chương trình của chúng ta sẽ random từ 1 đến 4 để lựa chọn người may mắn có số trùng với số được random. Đơn giản chỉ cần gọi hàm nextInt(4) và cộng thêm 1 để có kết quả như ý muốn.

int value = generator.nextInt(4) + 1;

Tạo chuỗi ngẫu nhiên

Tự tạo chuỗi ngẫu nhiên

Để tạo một chuỗi ngẫu nhiên, chúng ta có thể định nghĩa một chuỗi các ký tự được phép xuất hiện trong chuỗi ngẫu nhiên. Sau đó, chúng ta sử dụng Random để tạo một giá trị index ngẫu nhiên từ chuỗi ký tự đã định nghĩa trước đó. Chúng ta tiếp tục truy xuất các ký tự từ index cho đến khi đủ số lượng ký tự mong muốn.

private static final String ALPHA_NUMERIC = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

public String randomAlphaNumeric(int numberOfCharactor) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < numberOfCharactor; i++) {
        int number = generator.nextInt(ALPHA_NUMERIC.length());
        char ch = ALPHA_NUMERIC.charAt(number);
        sb.append(ch);
    }
    return sb.toString();
}

Sử dụng thư viện Apache commons-lang3

Apache Commons Lang là một thư viện tiện ích cho Java, cung cấp các lớp tiện ích và phương thức hỗ trợ xử lý chuỗi, số học, mảng, và nhiều hơn nữa. Trong trường hợp này, chúng ta có thể sử dụng lớp RandomStringUtils để tạo chuỗi ngẫu nhiên.

System.out.println(RandomStringUtils.random(4));
System.out.println(RandomStringUtils.randomAscii(4));
System.out.println(RandomStringUtils.randomNumeric(4));
System.out.println(RandomStringUtils.randomAlphabetic(4));
System.out.println(RandomStringUtils.randomAlphanumeric(4));

Sử dụng UUID

UUID (Universally Unique Identifier) hay còn được biết đến như là GUID (Globally Unique Identifier), là một chuỗi đại diện cho một mã định danh duy nhất, không thể thay đổi và có giá trị dài 128 bit. UUID được sử dụng để tạo tên file ngẫu nhiên, id session trong ứng dụng web, id transaction, và nhiều ứng dụng khác.

UUID uuid = UUID.randomUUID();
System.out.println("UUID: " + uuid.toString());
System.out.println("variant: " + uuid.variant());
System.out.println("version: " + uuid.version());

Sự ngẫu nhiên là yếu tố quan trọng trong việc tạo số và chuỗi ngẫu nhiên trong Java. Chúng ta có thể sử dụng các cách trên để tạo số và chuỗi ngẫu nhiên và áp dụng chúng vào các trường hợp thực tế khác nhau.

Tài liệu tham khảo:

1