TẠO SỐ GIẢ NGẪU NHIÊN TẠO BIẾN NGẪU NHIÊN
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA CÔNG NGHỆ THÔNG TIN
Tiểu luận học phần Mô phỏng ngẫu nhiên
Trang 2TẠO BIẾN NGẪU NHIÊN
Contents
MỞ ĐẦU 1
CHƯƠNG I: TẠO SỐ GIẢ NGẪU NHIÊN 2
1.1 GIỚI THIỆU 2
1.2 THUẬT TOÁN TẠO RA CÁC SỐ GIẢ NGẪU NHIÊN 2
1.2.1 Phương pháp nửa bình phương 2
1.2.2 Phương pháp đồng dư bậc hai 3
1.2.3 Phương pháp đồng dư tuyến tính 4
1.2.4 Phương pháp đồng dư cộng 7
CHƯƠNG II: TẠO BIẾN NGẪU NHIÊN 8
2.1 GIỚI THIỆU 8
2.2 CÁC PHƯƠNG PHÁP ĐỂ TẠO BIỄN NGẪU NHIÊN 8
2.2.1 Phương pháp phép biến nghịch đảo 8
2.2.2 Lấy mẫu từ những phân phối xác suất liên tục 9
2.2.3 Lấy mẫu từ những phân phối xác suất riêng biệt 12
2.2.4 Lấy mẫu từ phân phối xác suất thực nghiệm 14
2.2.5 Phương pháp loại trừ (Rejection) 17
2.2.6 Phương pháp Monte Carlo 18
TÀI LIỆU THAM KHẢO 20
Trang 3MỞ ĐẦU
Số ngẫu nhiên theo cách hiểu thông thường là một số bất kỳ nào đó Nhưngtrong toán học, số ngẫu nhiên là: “số có khả năng xuất hiện tương đương nhau”.Tuy nhiên, trong từng phạm vi sử dụng nhất định mà phải giới hạn các số ngẫunhiên được dùng Chẳng hạn, không thể có một số nguyên ngẫu nhiên mà chỉ cómột số nguyên ngẫu nhiên trong một miền xác định nào đó Ngoài ra, trong nhiềutrường hợp không chỉ cần một số ngẫu nhiên mà còn cần đến một hoặc nhiều dãy sốngẫu nhiên
Các số ngẫu nhiên rất hữu ích trong nhiều ứng dụng khác nhau Trong thuậttoán mật mã, thuật toán sử dụng các số ngẫu nhiên để mã hoá và giải mã thông tin,
ví dụ thuật toán mã hoá khóa như RSA, Diffiel-Hellman, DES, 3DES, AES Bêncạnh đó, các số ngẫu nhiên đóng vai trò quan trọng trong việc mô phỏng Ngay cảkhi không cần các số ngẫu nhiên, việc mô phỏng vẫn cần các số tùy ý dùng làm dữliệu nhập, và điều này được cung cấp rất thuận lợi bởi các công cụ tạo số ngẫunhiên Việc tạo ra các số giả ngẫu nhiên có thể được coi là một mẫu mô phỏng củamột phân phối cho trước Kỹ thuật mẫu mô phỏng này được coi như là kỹ thuậtMonte Carlo được sử dụng để giải quyết các bài toán trong lý thuyết xếp hàng, cácbài toán cung ứng vật tư và các vấn đề liên quan đến xấp xỉ nghiệm phương trình viphân, tích phân
Trang 4CHƯƠNG I: TẠO SỐ GIẢ NGẪU NHIÊN
Có rất nhiều phương pháp đáng tin cậy để sinh các số ngẫu nhiên cho việc môphỏng ngẫu nhiên thông qua các bộ sinh số ngẫu nhiên với cơ sở toán học vữngchắc Chúng ta sẽ xem xét một số phương pháp tạo số ngẫu nhiên quan trọng
Một phương pháp chấp nhận được để tạo số giả ngẫu nhiên phải đạt được cácyêu cầu sau:
1 Các số được tạo ra phải tuân theo phân phối đều, bởi vì thực sự các sự kiệnngẫu nhiên đều tuân theo phân phối này Vì vậy, bất cứ một sự mô phỏngcác sự kiện ngẫu nhiên nào cũng tuân theo quy luật này hay ít nhất là xấp xỉ
2 Các số được tạo ra cần phải độc lập, nghĩa là giá trị của một số trong dãy sốngẫu nhiên không ảnh hưởng đến giá trị của số kế tiếp
3 Dãy số ngẫu nhiên được tạo ra cần phải tái tạo lại được Điều này cho phéplặp lại thí nghiệm mô phỏng
4 Dãy số không được lặp lại đối với bất cứ chiều dài nào Theo lý thuyết thìkhông thể có, nhưng vì mục đích thực tế thì khả năng lặp lại của một chu kỳdài là phù hợp Chu kỳ lặp lại của một bộ số ngẫu nhiên được gọi là giaiđoạn của nó
5 Việc tạo các số ngẫu nhiên cần phải nhanh chóng vì trong các nghiên cứu
mô phỏng, đòi hỏi cần có nhiều số ngẫu nhiên, nếu việc tạo các số diễn rachậm thì có thể mất nhiều thời gian và tăng giá thành các nghiên cứu môphỏng
6 Trong việc taọ số ngẫu nhiên nên sử dụng càng ít bộ nhớ càng tốt Mô hình
mô phỏng thường đòi hỏi bộ nhớ lớn, do bộ nhớ thường có hạn nên việcgiảm tối đa việc chiếm dụng bộ nhớ trở nên rất cần thiết trong việc tạo ra sốngẫu nhiên
Chúng ta sẽ tìm hiểu một số phương pháp để tạo số ngẫu nhiên cơ bản Dựavào những phương pháp này, chúng ta sẽ tiếp tục trong chương tiếp theo để xem xétnhững phương pháp tạo những số ngẫu nhiên mà có một phân phối nhất định, nhưphân phối số mũ, phân phối chuẩn,
1.2.1 Phương pháp nửa bình phương
Kỹ thuật nửa bình phương do John von Neuman phát triển vào những năm 40.Bắt đầu từ số đầu tiên cho trước, ta bình phương nó lên và số giữa của số bìnhphương này được dùng làm số thứ hai của dãy số Kế tiếp, bình phương số thứ hai
và lấy số giữa của số bình phương này làm số thứ ba cho dãy số Quá trình cứ lặplại tiếp tục như vậy
Ví dụ 1:
Giả sử số đầu x0 = 25, khi đó các số ngẫu nhiên có 2 chữ số gồm
(25)2 = 0625 x1 = 62
Trang 5Phương pháp nửa bình phương có một số tính chất sau:
+ Các dãy số được tạo ra có chu kỳ ngắn
+ Bất kỳ lúc nào số 0 đều tạo ra các số bằng 0 (trường hợp ví dụ 1)
1.2.2 Phương pháp đồng dư bậc hai
Phương pháp này gần như tương đương với phương pháp nửa bình phươngnhưng có chu kỳ dài hơn Mối quan hệ phép đệ quy cho phương pháp này được xácđịnh bởi:
xn+1 = (xn(xn + 1)) mod m, với n 0, xo mod 4 =2, m= 2k
Trang 6+ x[j+1]<-(x[j]*(x[j]+1))%%16+ }
> print(x)
Ta có kết quả như sau:
[1] 1 2 6 10 14 2 6 10 14 2 6 10 14 2 6 10 14 2 6 10 14 2 6 10 14 [26] 2 6 10 14 2 6 10 14 2 6 10 14 2 6 10 14 2 6 10 14 2 6 10 14 2 [51] 6
Phương pháp đồng dư bậc hai được sử dụng khi m là lũy thừa của 2, và có chu kỳdài hơn phương pháp nửa bình phương
1.2.3 Phương pháp đồng dư tuyến tính
Phương pháp đồng dư tuyến tính (Linear Congruential Generators – LCG) làphương pháp được sử dụng thông dụng nhất, được đưa ra đầu tiên bởi Lehmer
Trạng thái tại bước thứ n là một số nguyên x n và hàm chuyển T được định nghĩa nhưsau:
1 Nếu a=1: phương pháp được gọi là phương pháp cộng
2 Nếu c=0: phương pháp được gọi là phương pháp nhân (multiplicative
congruential random number generator).
3 Nếu c0, phương pháp được gọi là phương pháp đồng dư hỗn tạp (mixed
congruential random number generator)
4 Các LCG nhân (c=0) nhanh hơn các LCG hỗn tạp (c0) do chúng có ít phéptoán cộng hơn
5 Trong thực tế phương pháp nhân được dùng nhiều hơn phương pháp cộng Bởi vìtheo phương pháp này xi+1 được xác định bởi xi Do (m+1) giá trị xo,x1, , xmkhông thể phân biệt, nên có ít nhất một giá trị xuất hiện 2 lần, ví dụ như xi và xi+k Khi đó xi+k,…, xi+k-1 được lặp lại như xi+k,…, xi+2k-1 và như vậy dãy số xi tuần hoànvới chu kỳ k<=m Toàn bộ chu kì m luôn có thể đạt được với a=c=1
Bên cạnh đó, sự lựa chọn các tham số a, c, m, xo rất quan trọng đối với chấtlượng của bộ sinh Nếu chúng không được chọn chính xác, bộ sinh có thể sẽkhông có chu kỳ lớn nhất, hay các số được sinh ra có thể không thể hiện tínhngẫu nhiên tốt hay thậm chí bộ sinh có thể không thực hiện hiệu quả Đối với bộ
số nhân lớn nhất là m-1 và nếu khi 0 xảy ra thì nó sẽ lặp lại không xác định
6 Thông thường, ta nên chọn m để làm cho toán tử modul có hiệu lực và sau đóchọn a và c để làm cho chu kỳ càng dài càng tốt
Trang 77 Một chu kỳ đầy đủ (có độ dài m) có thể đạt được khi một số của điều kiện đượcthỏa mãn như trong định lý sau.
Định lý :
Một bộ sinh đệ quy có chu kỳ đầy đủ m khi và chỉ khi nó thỏa các điều kiện sau:
(i) USCLN (c, m) = 1 (nghĩa là c và m luôn có ước số chung bằng 1).
(ii) a 1 mod p đối với mỗi ước nguyên tố p của m (nghĩa là mỗi ước số
chung của m cũng là ước số chung của a-1 )
(iii) a mod 4 nếu 4 chia hết cho m (nghĩa là, nếu m có bậc 4 thì 4 cũng là
1 Nếu m là số nguyên tố thì chu kỳ đủ đạt được chỉ khi a = 1
2 Ngay cả khi bộ sinh là chu kỳ đầy đủ vẫn không chắc chắn rằng các số được tạo
ra là số ngẫu nhiên Chẳng hạn, nếu a = 1, m = 1 và c = 3 thì các điều kiện trênđều thỏa mãn, nhưng với x0 = 0 toàn bộ dãy số được tạo ra là 4, 7, 10, 2, 5, 8, 0,
3, 6, 9, 1, 4, 7, chúng hầu như không phải là số ngẫu nhiên
3 Việc lựa chọn hằng số nhân a ảnh hưởng đến độ lớn của chu kỳ và tính ngẫunhiên của chuỗi được sinh ra
4 Khi m= 2n và c>0: chu kỳ tối đa là m có thể đạt được khi và chỉ khi a mod 4 1
và c là số lẻ (thường được chọn bằng 1) Ví dụ, xét bộ sinh LCG (a, 1, 16, x0):chu kỳ tối đa là 16 có thể đạt được nếu và chỉ nếu a=1, 5, 9 hay 13 Khi a=3, hay
11 thì chu kỳ là 8; khi a=7 thì chu kỳ là 4; và khi a=5 thì chu kỳ là 2 Chẳng hạnchuỗi các số nguyên giả ngẫu nhiên sinh ra với LCG(5,1,16,1) là 1, 6, 15, 12, 13,
2, 11, 8, 9, 14, 7, 4, 5, 10, 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14,
5 Khi m=2n và c=0: chu kỳ tối đa là m/4 đạt được nếu và chỉ nếu a mod 8 1 hay amod 8 5 (thường được chọn) và giá trị khởi đầu là số lẻ Ví dụ, với bộ sinhLCG(a, 0, 16, x0), chu kỳ tối đa là 4 đạt được nếu và chỉ nếu a=3, 5, 11 hay 13
6 Khi m là số nguyên tố và a>1 (không quan tâm đến c = 0 hay không): chu kỳ tối
đa là m-1 đạt được khi và chỉ khi a là số nguyên thủy đầu tiên của modul m.Như vậy, tham số quan trọng nhất của một LCG là modul m Kích thước của
nó ràng buộc chu kỳ (m thường được chọn là số nguyên tố hoặc là lũy thừa của 2).Đối với các bộ sinh đồng dư tuyến tính với modul là số nguyên tố, việc sử dụng gia
số c≠0 không tăng chu kỳ ngoại trừ khi a = 1 Thông thường, a phải lớn hơn 1 đểchuỗi sinh ra có tính ngẫu nhiên
Ví dụ 1:
Xét bộ sinh LCG (a, 0, 13, 1), xét về tính ngẫu nhiên của chuỗi được sinh ra,a=6 hoặc a=11 tốt hơn a=2 hay a=7 mặc dù chúng sinh ra chu kì đầy đủ Người tathường mong muốn các bộ sinh có chu kỳ đầy đủ hơn là các bộ sinh có chu kỳngắn
Trang 8Các giá trị khởi đầu giữa 1 và 12 không ảnh hưởng đến tính ngẫu nhiên củachuỗi mà chỉ chuyển điểm khởi đầu của chuỗi Tuy nhiên nếu bộ sinh không phải cóchu kỳ đầy đủ thì các giá trị khởi đầu khác nhau sẽ sinh ra các chuỗi kết quả khácnhau với các chu kỳ khác nhau.
Ví dụ 2:
Nếu một LCG không phải là bộ sinh chu kỳ đầy đủ, thì các giá trị khởi đầu xo
có thể cho ra các chuỗi khác nhau và độ dài chu kỳ khác nhau Chẳng hạn vớiLCG(3, 0, 16, xo)
Trang 91.2.4 Phương pháp đồng dư cộng
Phương pháp đồng dư cộng (Additive Congruential Generators) cũng tương
tự phương pháp đồng dư tuyến tính, tuy nhiên ở đây phép toán xor trong công thứcđược thay thế bằng phép toán cộng:
> print(x)
Từ đó ta có kết quả như sau:
[1] 1 2 4 8 6 7 9 3 1 7 4 3 6 7 4 8 1 7 4 8 6 7 4 8 6 2 9 3 1 7 9 8 [33] 1 2 9 8 6 7 9 8 6 2 9 8 6 2 4 3 1 7 9 3 6 7 4 3 6 2 9 3 6 2 4 3 [65] 6 2 4 8 1 7 9 3 1 2 9 8 1 2 4 3 1 2 4 8 1 2 4 8 6 7 9 3 1 7 4 3 [97] 6 7 4 8 1 7 4 8 6 7 4 8 6 2 9 3 1 7 9 8 1 2 9 8 6 7 9 8 6 2 9 8 [129] 6 2 4 3 1 7 9 3 6 7 4 3 6 2 9 3 6 2 4 3 6 2 4 8 1 7 9 3 1 2 9 8 [161] 1 2 4 3 1 2 4 8 1 2 4 8 6 7 9 3 1 7 4 3 6 7 4 8 1 7 4 8 6 7 4 8 [193] 6 2 9 3 1 7 9 8
Trang 10CHƯƠNG II: TẠO BIẾN NGẪU NHIÊN
2.1 GIỚI THIỆU
Trong chương này, ta bàn luận về kỹ thuật để phát sinh những số ngẫu nhiênvới một phân phối đặc biệt Những số ngẫu nhiên sau một phân phối đặc biệt đượcgọi random variates hoặc stochastic variates (những biến ngẫu nhiên) Biến ngẫu nhiên là một thuật ngữ được dùng trong toán học và thống kê Trong một phép thử
ngẫu nhiên (random experiment), đầu ra (outcome) của nó có thể là giá trị số hoặc
không phải Ví dụ phép thử ngẫu nhiên là tung một đồng xu lên và xét mặt nào của
đồng xu ở phía trên, thì kết quả đầu ra có thể là {sấp, ngửa} (đầu ra không phải là
số) Ví dụ phép thử ngẫu nhiên là tung con xúc sắc và xem mặt nằm phía trên là cómấy chấm, thì kết quả đầu ra có thể là {1,2,3,4,5,6} (đầu ra là số) Tuy nhiên, trongcác ứng dụng của thống kê, người ta muốn mỗi đầu ra đều gắn với một đại lượng đođạc được, hay còn gọi là thuộc tính có giá trị là số Để thực hiện điều này, người ta
định ra biến ngẫu nhiên để ánh xạ mỗi đầu ra của một phép thử ngẫu nhiên với một
giá trị số
Biến ngẫu nhiên là một hàm toán học với đặc điểm: nó gán một giá trị bằng sốcho kết quả (đầu ra) của một phép thử ngẫu nhiên (thực nghiệm)
với ζ là đại diện cho đầu ra của một thực nghiệm, x là một số thực, X là hàm
ánh xạ (hay là biến ngẫu nhiên) Vì thế, người ta còn gọi X là biến ngẫu nhiên giá
trị thực (real-valued random variable).
Có nhiều kỹ thuật để sinh những biến ngẫu nhiên Phương pháp phép biếnnghịch đảo là một trong số kỹ thuật thường sử dụng nhất Ngoài ra có một sốphương pháp để tạo biến ngẫu nhiên từ những phân phối lý thuyết liên tục và riêngbiệt được xác định
2.2.1 Phương pháp phép biến nghịch đảo
Phương pháp này có thể áp dụng cho những trường hợp khi hàm mật độ tíchlũy có thể đảo ngược phân tích Giả thiết rằng ta muốn sinh những biến ngẫu nhiên
từ một hàm mật độ xác suất (bdf) f(x) Giả sử F(x) là hàm mật độ tích lũy của nó.Chú ý F(x) được định nghĩa trong [0,1] Xét thuộc tính này của hàm mật độ tích lũy
để thu được máy phát những biến ngẫu nhiên đơn giản sau
Trước hết, sinh một số ngẫu nhiên r nào đó rồi thiết lập cho F(x), đó là F(x)=r
Số lượng x thu được bằng cách nghịch đảo F, đó là 1 ( )
r F
, ở đây 1 ( )
r F
chỉ phép biến đổi nghịch đảo của F Trong khi một ví dụ, giả sử ta giả thiết muốntạo biến ngẫu nhiên với mật độ xác suất tuân theo hàm
f(x) = 2x, 0 <=x<= 1
Đồ thị biểu diễn hàm mật độ xác suất này trong hình 2.1a Đầu tiên ta tínhtoán hàm mật độ F(x) tích lũy Ta có
1 0
, 2
Trang 11r=x2 hoặc x r
Nghịch đảo của đồ thị trong hình 2.1a sẽ thu được đồ thị trong hình 2.1b
2.2.2 Lấy mẫu từ những phân phối xác suất liên tục
Chúng ta sẽ tìm hiểu cách sử dụng phương pháp biến nghịch đảo để phát sinhnhững biến ngẫu nhiên từ một phân phối đều, một phân phối mũ, và một phân phốiErlang Ta cũng mô tả hai kỹ thuật để sinh những biến ngẫu nhiên từ phân phốichuẩn
1 Lấy mẫu từ phân phối đều
Hàm mật độ xác xuất của phân phối đều được định nghĩa như sau:
) , ( , 1 )
(
b a x
b a x a b x
Hình 2.1a pdf f(x) Hình 2.1b Nghịch đảo của F(x)
a b
a x dt a b
dt a b x F
Trang 12
Phương pháp phép biến nghịch đảo để sinh những biến ngẫu nhiên:
a b
a x x
2 Lấy mẫu từ phân phối mũ
Hàm mật độ xác suất phân phối mũ được định nghĩa như sau:
dt t f x
F
1 )
( )
(
Kỳ vọng và phương sai được xác định theo:
2 0
2
0
1 ))
( ( )
(
1 )
(
a tdtdt e
x E t x
VAR
a dtdt aet x
E
at at
3 Lấy mẫu từ một phân phối Erlang
Một phân phối mũ có thể không đại diện một trạng thái trong thực tế Chẳnghạn, thời gian thực hiện của một chương trình máy tính, hoặc thời gian mà nó dùng
để sản xuất một thiết bị, có thể không phân phối mũ Nó có thể được xác định, tuynhiên, trong khi một số phân phối mũ cung cấp những vị trí liên tiếp Nếu trungbình của tất cả dịch vụ riêng lẻ cũng như thế, thì toàn bộ thời gian dịch vụ đi theomột phân phối Erlang, như được đưa ra ở hình 3.3
Hình 2.3 Phân phối Erlang
Trang 13Phân phối Erlang là cuộn của k phân phối mũ có cùng tính chất 1/a Một phânphối Erlang gồm có k phân phối mũ được tham chiếu tới như Ek Kỳ vọng vàphương sai của một biến ngẫu nhiên x được xác định theo phân phối Erlang:
2 )
Var
a
k x
i i k
i
a
r a
x
x
1 1
1
log
1log
1
4 Lấy mẫu từ một phân phối chuẩn
Một biến ngẫu nhiên X với hàm mật độ xác xuất
x
f
x
,2
1)
2
) ( 2
Trong đó, >0 được xác định để có một phân phối chuẩn với những tham số
và Phương sai và kỳ vọng của X tương ứng là và 2
(
2
2 1
Z theo phân phối bình thường chuẩn
Để sinh những biến ngẫu nhiên từ một phân phối chuẩn với những tham số
và , ta sử dụng định lý giới hạn trung tâm Đặc biệt định lý giới hạn trung tâmphát biểu tóm tắt là nếu x1, x2, , xn là n biến ngẫu nhiên độc lập, từng biến có cùngphân phối xác suất với E(Xi) = và Var(Xi) = 2
, thì tổng X i = X1 + X2 + +
Xn tiếp cận một phân phối chuẩn trong khi n lớn Kỳ vọng và phương sai của phânphối chuẩn này:
2 )
(
) (
n X
Var
n X
Thủ tục sinh những biến ngẫu nhiên bình thường yêu cầu k số ngẫu nhiên r1,
r2, ,rk Khi mỗi ri là một số ngẫu nhiên phân tán không xác định trong [0, 1], ta có:
12
1 12
) ( )
(
2
1 2 )
Var
b a r
E
i
i