5- Câu hỏi và bài tập
4.4- Số ngẫu nhiên (Random number) phân bố đều U(0,1)
Khi mơ phỏng hệ thống ng−ời ta th−ờng cần có các số ngẫu nhiên phân bố theo những quy luật phân bố nhất định để mô phỏng các sự kiện ngẫu nhiên xảy ra trong hệ. Số ngẫu nhiên phân bố đều trong khoảng (0,1) th−ờng đ−ợc dùng làm cơ sở để sản sinh ra số ngẫu nhiên có các phân bố khác nhau. Phân bố đều U(0,1) đóng vai trị quan trọng trong kỹ thuật mơ phỏng, vì vậy đã đ−ợc nhiều ng−ời nghiên cứu và có nhiều ph−ơng pháp tạo ra nó. Sau đây là một số ph−ơng pháp thông dụng để tạo ra phân bố đều U(0,1).
a. Dùng máy phát ngẫu nhiên
Máy phát số ngẫu nhiên dựa trên nguyên tắc sử dụng nhiễu do các thiết bị điện tử gây ra. Trên hình 4.7 biểu diễn ph−ơng pháp tạo nhiễu ngẫu nhiên dùng điện trở trong một mạch khuếch đại điện tử trong đó
điện áp u(t) đóng vai trị là nhiễu ngẫu nhiên. Ng−ời ta chọn quãng thời gian lấy mẫu T(a,b) và biên độ điện áp cắt Uc tuỳ ý. Giao điểm giữa u(t) và Uc tạo thành dãy số ngẫu nhiên t1, t2, t3,..., tn. Đây là dãy số ngẫu nhiên phân bố đều U(0,1).
Ưu điểm: Nhận đ−ợc dãy số hoàn tồn ngẫu nhiên với số l−ợng khơng hạn chế (bằng cách thay đổi thời gian lấy mẫu T(a,b) và điện áp cắt Uc).
Nh−ợc điểm: Phải lắp thêm máy phát số ngẫu nhiên. Khi cần làm lại q trình mơ phỏng thì khơng tạo đ−ợc dãy số ngẫu nhiên giống lần tr−ớc nên khơng thể so sánh chính xác kết quả của hai lần thử nghiệm.
b. Dùng bảng số ngẫu nhiên
Bằng nhiều cách ng−ời ta lập đ−ợc bảng các số ngẫu nhiên (Xem phụ lục). Khi mô phỏng có thể lấy các số ngẫu nhiên trong bảng ra theo một thứ tự nào đó: lấy lần l−ợt, lấy cách quãng,...
Ưu điểm: Có thể lặp lại dãy số ngẫu nhiên để dùng cho các lần mô phỏng khác nhau. Nh−ợc điểm: Tốn bộ nhớ để l−u bảng số ngẫu nhiên.
c. Dùng thuật toán tạo số giả ngẫu nhiên (Pseudorandom Numbers)
Ngày nay ng−ời ta th−ờng dùng thuật toán tạo số ngẫu nhiên. Nh− vậy rất thuận tiện vì khi lập trình chỉ cần lập ch−ơng trình con tạo số ngẫu nhiên mà không cần phải ghi số ngẫu
0 0.2 0.4 0.6 0.8 λ = 0.5 p(x) 1 2 3 4 5 Hình 4.6- Phân bố Poisson với λ = 0.5 x u(t) Uc a b t
nhiên vào bộ nhớ của máy tính. Tuy nhiên ng−ời ta cũng chứng minh đ−ợc rằng bất kỳ thuật toán nào cũng tạo ra số ngẫu nhiên có chu kỳ nên nó khơng hồn tồn là số ngẫu nhiên mà nó chỉ là số giả ngẫu nhiên (Pseudorandom Numbers). Tuy nhiên nếu chu kỳ của số giả ngẫu nhiên đủ lớn (khoảng (1ữ5).106) thì số ngẫu nhiên đó có thể đ−ợc xem là số ngẫu nhiên đối với các bài tốn mơ phỏng thơng th−ờng. Có nhiều thuật tốn tạo số giả ngẫu nhiên khác nhau.
- Thuật tốn lấy phần giữa của bình ph−ơng:
Cho số khởi đầu xo = 0,2152, vậy số ngẫu x1, x2,... tiếp theo sẽ đ−ợc tính nh− sau: 2 o 1 x =0, 04631104→x =0.6311 2 1 2 x =0,39828721→x =0.8287
Nh−ợc điểm của ph−ơng pháp này là rất dễ xảy ra tr−ờng hợp chu kỳ lặp lại của số ngẫu nhiên quá ngắn. Ví dụ: Chọn xo= 0,4500 ta có:
(xo)2 = 0.20250000 → x1 = 0.2500 (x1)2 = 0.06250000 → x2 = 0.2500 (x2)2 = 0.06250000 → x3 = 0.2500 - Thuật toán nhân:
Thuật toán: zi+1 = λxi; Xi+1 = ]zi+1[, trong đó: xi - là số ngẫu nhiên phân bố đều trong (0,1). ]zi+1[ - là phần lẻ của số zi+1.
λ - Hệ số: λ = 8t ± 3 với t là số nguyên d−ơng bất kỳ.
Ví dụ: chọn t = 5 → λ = 8.5 ± 3, chọn λ = 37. Cho tr−ớc xo = 0,37843. Ta có số ngẫu nhiên sau: z1= λxo = 37*0,37843 = 14,00191 → x1 =0,00191 z2= λx1 = 37*0,00191 = 0,07067 → x2 =0,07067 z3= λx2 = 37*0,07067 = 2.61497 → x3 =0,61497 z4= λx3 = 37*0,61497 = 22.74723 → x3 =0,74723
Dãy số ngẫu nhiên thu đ−ợc sẽ phân bố đều trong khoảng (0,1). Ng−ời ta chứng minh đ−ợc chu kỳ lặp lại của dãy số ngẫu nhiên này đủ lớn nên có thể dùng trong phép mơ phỏng.