Tạo giá trị số ngẫu nhiên trong VBA Excel

Tạo giá trị số ngẫu nhiên trong VBA Excel

  1. Hàm tạo số ngẫu nhiên là gì ?
  2. Các ví dụ ví dụ về cách sử dụng hàm tạo số ngẫu nhiên trong VBA.
  3. Chia sẽ kinh nghiệm hàm tạo số ngẫu nhiên trong VBA

1. Hàm tạo số ngẫu nhiên là gì ?

Là 1 hàm trả về 1 con số bất kỳ nào nó dựa trên các dữ liệu từ chip của máy tính. 

Trong VBA, bạn có thể tạo các giá trị ngẫu nhiên bằng cách sử dụng các hàm Rnd vba Randomize vba.

2. Các ví dụ ví dụ về cách sử dụng hàm tạo số ngẫu nhiên trong VBA.

Hàm Rnd: Tạo số thực ngẫu nhiên

Hàm Rnd trả về một giá trị số thực ngẫu nhiên trong khoảng từ 0 đến 1 (không bao gồm 1). 

Để tạo số ngẫu nhiên trong một phạm vi cụ thể, bạn cần kết hợp với phép toán.

' Tạo một số ngẫu nhiên từ 0 đến 1
    Dim randomNumber As Double
    randomNumber = Rnd
    MsgBox randomNumber

Hàm Randomize: Khởi tạo hạt giống cho số ngẫu nhiên

Để đảm bảo rằng mỗi lần chạy chương trình, bạn có một chuỗi số ngẫu nhiên khác nhau, bạn có thể sử dụng hàm Randomize. Hàm này sẽ sử dụng thời gian hệ thống làm hạt giống để tạo ra các giá trị ngẫu nhiên khác nhau mỗi lần.

' Khởi tạo hạt giống ngẫu nhiên
    Randomize   
    ' Tạo một số ngẫu nhiên từ 0 đến 1
    Dim randomNumber As Double
    randomNumber = Rnd
    MsgBox randomNumber

Tạo số nguyên ngẫu nhiên trong một phạm vi cụ thể

Nếu bạn muốn tạo số nguyên ngẫu nhiên trong một phạm vi xác định (ví dụ từ 1 đến 100), bạn có thể nhân số ngẫu nhiên với phạm vi mong muốn và làm tròn kết quả.

 ' Khởi tạo hạt giống ngẫu nhiên
    Randomize
    
    ' Tạo số nguyên ngẫu nhiên từ 1 đến 100
    Dim randomInt As Integer
    randomInt = Int((100 - 1 + 1) * Rnd + 1)
    
    MsgBox randomInt


Giải thích:

    Int((100 - 1 + 1) * Rnd + 1) tạo ra số ngẫu nhiên trong khoảng từ 1 đến 100.
        (100 - 1 + 1) là phạm vi, và Rnd trả về số thực trong khoảng từ 0 đến 1.
        Int(...) làm tròn kết quả về số nguyên.

Tạo số thực ngẫu nhiên trong một phạm vi cụ thể

Nếu bạn muốn tạo số thực ngẫu nhiên trong một phạm vi cụ thể (ví dụ từ 10 đến 20), bạn có thể thay đổi phạm vi như sau:

' Khởi tạo hạt giống ngẫu nhiên
    Randomize
    
    ' Tạo số thực ngẫu nhiên từ 10 đến 20
    Dim randomFloat As Double
    randomFloat = (20 - 10) * Rnd + 10
    
    MsgBox randomFloat


Giải thích:

    (20 - 10) là phạm vi của số ngẫu nhiên bạn muốn (từ 10 đến 20).
    Rnd tạo ra số thực trong khoảng từ 0 đến 1, sau đó nhân với phạm vi và cộng với giá trị bắt đầu (10) để tạo ra số thực trong phạm vi từ 10 đến 20.

3. Chia sẽ kinh nghiệm hàm tạo số ngẫu nhiên trong VBA

    Rnd: Tạo số thực ngẫu nhiên từ 0 đến 1.
    Randomize: Khởi tạo hạt giống để đảm bảo số ngẫu nhiên không lặp lại.
    Tạo số ngẫu nhiên trong phạm vi cụ thể: Sử dụng công thức Int((upperBound - lowerBound + 1) * Rnd + lowerBound) cho số nguyên và ((upperBound - lowerBound) * Rnd + lowerBound) cho số thực.

Khi lập trình ứng dụng với VBA ta cần tạo ra số ngẫu nhiên để tính toán.

Tôi sẽ giải thích trong excel có 2 hàm hay sử dụng để tạo ra số ngẫu nhiên

RAND , RANDBETWEEN

 RAND: hàm trả về 1 số ngẫu nhiên có giá trị từ 0 đến 0,9999...
 
 Sau này có thêm hàm RANDBETWEEN, giúp cho ta tạo số ngẫu nhiên nhanh hơn mà không cần nhân thêm 1 số nào đó

 Nếu dùng hàm RAND thì nếu muốn trả về số ngẫu nhiên từ 1 đến 10 thì ta phải 

Ta cần sử dụng hàm Rdn viết tắt của tiếng anh là Random

Ví dụ tạo số ngẫu nhiên trong VBA

Dim SoNgauNhien  As Integer
SoNgauNhien  = Int((6 * Rnd) + 1)    ' Sinh ra số ngẫu nhiên trong phạm vi 1 đến 6

? Tại sao phải +1 ở ví dụ trên: vì để kết quả trả về không phải là số 0

Vậy bản chất của hàm Rnd VBA trả về cho từ giá trị từ 0 đến 0.99999....

? Tại sao phải sử dụng hàm Int ở ví dụ trên: vì để kết quả trả về không phải là số lẻ, ta cần số ngẫu nhiên là số nguyên (làm tròn)

 

 

Tìm kiếm:

Bài viết liên quan:

Tạo giá trị số ngẫu nhiên trong VBA Excel