Tiểu luận Tạo số giả ngẫu nhiên, tạo biến ngẫu nhiên

Số ngẫu nhiên theo cách hiểu thông thường là một số bất kỳ nào đó. Nhưng trong 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ẫu nhiê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ều trườ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ật toá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ên cạ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ẫu nhiê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ủa một phân phối cho trước. Kỹ thuật mẫu mô phỏng này được coi như là kỹ thuật Monte Carlo được sử dụng để giải quyết các bài toán trong lý thuyết xếp hàng, các bà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 vi phân, tích phân.

doc22 trang | Chia sẻ: tuandn | Lượt xem: 3318 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Tiểu luận Tạo số giả ngẫu nhiên, tạo biến ngẫu nhiên, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC HUẾ TRƯỜ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 TẠO SỐ GIẢ NGẪU NHIÊN TẠO BIẾN NGẪU NHIÊN Giáo viên hướng dẫn: PGS.TS. Trần Lộc Hùng Học viên thực hiện: Nguyễn Thị Liệu Lớp KHMT Khóa 2008-2010 Huế, Tháng 06 năm 2009 TẠO SỐ GIẢ NGẪU NHIÊN TẠO BIẾN NGẪU NHIÊN Contents MỞ ĐẦ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ưng trong 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ẫu nhiê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ều trườ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ật toá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ên cạ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ẫu nhiê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ủa một phân phối cho trước. Kỹ thuật mẫu mô phỏng này được coi như là kỹ thuật Monte Carlo được sử dụng để giải quyết các bài toán trong lý thuyết xếp hàng, các bà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 vi phân, tích phân. CHƯƠNG I: TẠO SỐ GIẢ NGẪU NHIÊN GIỚI THIỆU 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ững chắ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ác yêu cầu sau: 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ện ngẫu nhiên đều tuân theo phân phối này. Vì vậy, bất cứ một sự mô phỏng cá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ỉ. 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. 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ép lặp lại thí nghiệm mô phỏng. 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ó. 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 ra chậ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. 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ệc giả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ựa và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ét nhữ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,... THUẬT TOÁN TẠO RA CÁC SỐ GIẢ NGẪU NHIÊN 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ình phươ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ặp lạ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. (62)2 = 3844 x2 = 84. (84)2 = 7056 x3 = 05. (05)2 = 0025 x4 = 02. (02)2 = 0004 x5 = 00. (00)2 = 0000 x6 = 00. Ví dụ 2: Giả sử số đầu x0 = 3187, khi đó các số ngẫu nhiên có 4 chữ số gồm (3187)2 = 10156969 x1 = 1569. (1569)2 = 02461761 x2 = 4617. (4617)2 = 21316689 x3 = 3166. (3166)2 = 10023556 x4 = 0235. (0235)2 = 00055225 x5 = 0552. (0552)2 = 00304704 x6 = 3047. (3047)2 = 09284209 x7 = 2842. Phươ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) 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ương như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 Ví dụ: Với x0 = 2, m = 16 và tạo dãy số ngẫu nhiên sử dụng phương pháp đồng dư bậc hai. x0 = 2 x1 = (x0(x0 + 1)) mod 16 = (2(2 + 1)) mod 16 = 6 x2 = (x1(x1 + 1)) mod 16 = (6(6 + 1)) mod 16 = 10 x3 = (x2(x2 + 1)) mod 16 = (10(10 + 1)) mod 16 = 14 x4 = (x3(x3 + 1)) mod 16 = (14(14 + 1)) mod 10 = 2 x5 = (x4(x4 + 1)) mod 16 = (2(2 + 1)) mod 10 = 6 x6 = (x5(x5 + 1)) mod 16 = (6(6 + 1)) mod 10 = 10 x7 = (x6(x6 + 1)) mod 16 = (10(10 + 1)) mod 10 = 14 x8 = (x7(x7 + 1)) mod 16 = (14(14 + 1)) mod 10 = 2 Dùng phần mềm R để tạo ra 50 số ngẫu nhiên theo phương pháp này ta có câu lệnh như sau: > x<-1 > for(j in 1:50){ + x[0]<-2 + 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. 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 xn và hàm chuyển T được định nghĩa như sau: xn = (a xn-1 +c ) mod m, n ≥ 0 trong đó: x0 là giá trị khởi đầu cho trước (0xom) a là hằng số nhân (0 a m). c là gia số (0cm). m là modul (m > 0). Chú ý : 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ép toá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,.., xm khô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àn vớ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ất lượ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ính ngẫ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. 7. Một chu kỳ đầy đủ (có độ dài m) có thể đạt được khi một số của điều kiện được thỏ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à ước số của a - 1) . Định nghĩa: Nếu m là nguyên tố thì a là số nguyên thủy đầu tiên của modul m nếu và chỉ nếu an mod m 1 với n=1, 2, 3, …, m-2. Chú ý: 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ẫu nhiê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ạn chuỗ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 a mod 8 5 (thường được chọn) và giá trị khởi đầu là số lẻ. Ví dụ, với bộ sinh LCG(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 ta thường mong muốn các bộ sinh có chu kỳ đầy đủ hơn là các bộ sinh có chu kỳ ngắn. a Chuỗi kết quả {xn} Chu kỳ 0 0, 0,… 1 1 1, 1,.. 1 2 1, 2, 4, 8, 3, 6, 12, 11, 9, 5, 10, 7, 1,… 12 3 1, 3, 9, 1 3 4 1, 4, 3, 12, 9, 10, 1,… 6 5 1, 5, 12, 8, 1 4 6 1, 6, 10, 5, 9, 11, 12, 6, 3, 8, 4, 2, 1,.. 12 7 1, 7, 10, 5, 9, 11, 12, 6, 3, 8, 4, 2, 1,… 12 8 1, 8, 12, 5, 1,.. 4 9 1, 9, 3, 1,… 3 10 1, 10, 9, 12, 3, 4, 1,.. 6 11 1, 11, 4, 5, 3, 7, 12, 2, 9, 8, 10, 6, 1 12 12 1, 12, 1,… 2 Đối với chu kỳ đầy đủ, các sự lựa chọn khác nhau của giá trị khởi đầu chỉ nhằm để chuyển sang điểm khởi đầu trong chuỗi đã xác định bởi a, c, m. Chẳng hạn như LCG(6, 0, 13, x0) là bộ sinh chu kỳ đầy đủ. Nếu giá trị khởi đầu xo =1, ta có chuỗi kết quả là 1, 6, 10, 8, 9, 2, 12, 7, 3, 5, 4, 11, 1,… Các giá trị khởi đầu giữa 1 và 12 không ảnh hưởng đến tính ngẫu nhiên của chuỗ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ác nhau 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ới LCG(3, 0, 16, xo) xo Chuỗi kết quả {xn} Chu kỳ 1, 3, 9 hoặc 11 …1, 3, 9, 11, 1,.. 4 5, 7, 13 hoặc 15 …5, 15, 13, 7, 5,… 4 2 hoặc 6 …2, 6, 2,… 2 4 hoặc 12 …4, 12, 4,… 2 10 hoặc 14 …10, 14,… 2 0 0, 0,… 1 8 8, 8,… 1 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: Xj=(Xj-1 +…+ Xj-n) mod m, Phương pháp này nhanh vì không cần phép nhân nào cả. Ngay cả khi chỉ dùng phép cộng số nguyên thông thường, vẫn có thể tạo được các số ngẫu nhiên tốt Ví dụ: x1 = 1, x2 = 2, x3 = 4, x4 = 8, x5 = 6 . x6 = (x5 + x1) mod 10 = (6+1) mod 10 = 7. x7 = (x6 + x2) mod 10 = (7+2) mod 10 = 9. x8 = (x7 + x3) mod 10 = (9+4) mod 10 = 3. x9 = (x8 + x4) mod 10 = (8+8) mod 10 = 1. x10 = (x9 + x5) mod 10 = (1+6) mod 10 = 7. x11 = (x10 + x6) mod 10 = (7+7) mod 10 = 4. x12 = (x11 + x7) mod 10 = (4+9) mod 10 = 3. x13 = (x12 + x8) mod 10 = (3+3) mod 10 = 6. x14 = (x13 + x9) mod 10 = (6+1) mod 10 = 7. x15 = (x14 + x10) mod 10 = (7+7) mod 10 = 4. Dùng phần mềm R ta có thể tạo 200 số ngẫu nhiên ta dùng câu lệnh như sau: > x<-1 > for(j in 6:200){ + x[1]<-1 + x[2]<-2 + x[3]<-4 + x[4]<-8 + x[5]<-6 + x[j]<-(x[j-1]+x[j-5])%%10 + } > 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 CHƯƠ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ên vớ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 được gọ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, trong cá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ến nghị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êng biệt được xác định. CÁC PHƯƠNG PHÁP ĐỂ TẠO BIỄN NGẪU NHIÊN 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ích lũ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à , ở đây 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ốn tạ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ính toán hàm mật độ F(x) tích lũy. Ta có Giả sử r là một số ngẫu nhiên. Khi đó, ta có r=x2 hoặc 0 1 x 1 f(x) 2 F(x) r 0 x 1 Hình 2.1a pdf f(x) Hình 2.1b Nghịch đảo của F(x) Nghịch đảo của đồ thị trong hình 2.1a sẽ thu được đồ thị trong hình 2.1b. 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 sinh nhữ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ối Erlang. Ta cũng mô tả hai kỹ thuật để sinh những biến ngẫu nhiên từ phân phối chuẩn. 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: Và đồ thị biểu diễn: Hình 2.2 Phân phối đều Hàm mật độ tích luỹ Kỳ vọng và phương sai được xác định như sau: Phương pháp phép biến nghịch đảo để sinh những biến ngẫu nhiên: hoặc 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: F(x) = ae-ax, a > 0, x >= 0. Hàm mật độ tích lũy: Kỳ vọng và phương sai được xác định theo: Phương pháp phép biến nghịch đảo để sinh những biến ngẫu nhiên như sau: r=F(x)=1-e-ax hoặc 1-r =e-ax hoặc Từ phân phối 1 - F(x) không xác định trong [ 0,1], chúng ta có thể sử dụng thủ tục rút gọn sau: r=e-ax vì vậy 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ẳng hạ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, tuy nhiên, trong khi một số phân phối mũ cung cấp những vị trí liên tiếp. Nếu trung bì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 theo một phân phối Erlang, như được đưa ra ở hình 3.3. Hình 2.3 Phân phối Erlang Phâ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ân phố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: và Những biến ngẫu nhiên Erlang có thể được sinh ra bởi quá trình sinh đơn giản ngẫu nhiên trên về phân phối Erlang nào đó đặt cơ sở. Quá trình này có thể được hoàn thành bởi việc lấy tổng của k biến ngẫu nhiên phân phối mũ, x1, x2,..., xk với cùng điều kiện 1/a. Chúng ta có 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 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à . Nếu = 0 và = 1 thì phân phối chuẩn được xác định như sự phân bố bình thường chuẩn và hàm mật độ xác xuất của nó là Nếu một biến ngẫu nhiên X theo một phân phối chuẩn với trung bình và phương sai , thì là biến ngẫu nhiên Z được định nghĩa như sau: 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âm phá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ùng phân phối xác suất với E(Xi) = và Var(Xi) = , thì tổng = 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ân phối chuẩn này: 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ó: Sử dụng định lý giới hạn trung tâm, ta có tổng åri của k số ngẫu nhiên tiếp cận phân phối chuẩn là : hoặc (3.1) Bây giờ, ta xem xét phân phối chuẩn với những tham số và từ đó muốn sinh những biến ngẫu nhiên bình thường. Giả sử x là một biến ngẫu nhiên bình thường như vậy. Thì: (3.2) Cân bằng (3.1) và (3.2) ta có hoặc Phương trình này cung cấp cho ta một công thức đơn giản để sinh những biến ngẫu nhiên bình thường với trị một trung bình và độ lệch chuẩn . Giá trị k phải rất lớn, từ sự lớn hơn nó làm độ chính xác tốt hơn. Thông thường, phải cân bằng sự chính xác để mang lại hiệu quả. Giá trị nhỏ nhất cần thiết k = 10. Một cách tiếp cận thay thế để phát sinh những biến ngẫu nhiên bình thường (được biết như cách tiếp cận trực tiếp) sau đây. Giả sử r1 và r2 là hai số ngẫu nhiên độc lập phân bố không xác định. Thì là hai biến ngẫu nhiên phân phối chuẩn bình thường. Phương pháp này sinh những kết quả và tốc độ của những sự tính toán so sánh là tốt với cách tiếp cận giới hạn trung tâm để những hàm chương trình con đạt hiệu quả đặc biệt. Lấy mẫu từ những phân phối xác suất ri