1. Trang chủ
  2. » Luận Văn - Báo Cáo

TẠO số NGẪU NHIÊN (RANDOM NUMBER GENERATION)

28 2,2K 8

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 0,92 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. Random number generation RNG – bộ tạo số ngẫu nhiên là một thiết bị tính toán hoặc thi

Trang 1

BỘ THÔNG TIN VÀ TRUYỀN THÔNG

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

- -BÀI TIỂU LUẬN

Môn học: An Ninh Mạng Viễn Thông

(RANDOM NUMBER GENERATION)

Giảng viên hướng dẫn: Thầy Nguyễn Chiến Trinh Nhóm sinh viên thực hiện: Nhóm 14

Trang 2

Phân công công công việc trong nhóm 14:

1 Hoàng Thị Ngọc Anh: Các thuật toán để tạo ra số ngẫu nhiên

2 Lương Bảo Toàn: Tìm hiểu phần tạo biến ngẫu nhiên bằng phương pháp phép biến nghịch đảo và Lấy mẫu từ những phân phối xác suất liên tục

3 Nguyễn Minh Hùng: Tìm hiểu phần tạo biến ngẫu nhiên bằng phương pháp Lấy mẫu từ những phân phối xác suất riêng biệt và Lấy mẫu từ những phân phối xác suất thực nghiệm

4 Đinh Hoàng An: Tìm hiểu phần tạo biến ngẫu nhiên bằng phương pháp loại trừ (Rejection) và phương pháp Monte Carlo

Trang 3

MỤC LỤC

MỞ ĐẦU 1

2.1 GIỚI THIỆU 2

2.2 THUẬT TOÁN TẠO RA CÁC SỐ GIẢ NGẪU NHIÊN 3

2.2.1 Phương pháp nửa bình phương 3

2.2.2 Phương pháp đồng dư bậc hai 4

2.2.3 Phương pháp đồng dư tuyến tính 4

2.2.4 Phương pháp đồng dư cộng 8

CHƯƠNG III: TẠO BIẾN NGẪU NHIÊN 1

3.1 GIỚI THIỆU 1

3.2 CÁC PHƯƠNG PHÁP ĐỂ TẠO BIỄN NGẪU NHIÊN 2

3.2.1 Phương pháp phép biến nghịch đảo 2

3.2.2 Lấy mẫu từ những phân phối xác suất liên tục 3

3.2.3 Lấy mẫu từ những phân phối xác suất riêng biệt 6

3.2.4 Lấy mẫu từ phân phối xác suất thực nghiệm 8

3.2.5 Phương pháp loại trừ (Rejection) 11

3.2.6 Phương pháp Monte Carlo 13

Trang 4

MỞ ĐẦU

Các số ngẫu nhiên đã được sử dụng từ hàng nghìn năm trước Dù là tung đồng

xu hay tung một con xúc xắc thì chúng đều đưa tới kết quả là một giá trị ngẫu nhiên Những bộ tạo số ngẫu nhiên cũng tương tự – người thiết lập đều cố gắng để tạo các giá trị đạt tới ngưỡng không thể dự đoán và là một kết quả ngẫu nhiên

Việc tạo số ngẫu nhiên được sử dụng cho nhiều mục đích khác nhau Bên cạnh các ứng dụng tạo số ngẫu nhiên cho việc cờ bạc hay đơn giản là tạo kết quả ngẫu nhiên cho trò chơi điện tử, tính ngẫu nhiên còn rất quan trọng cho ngành mật mã học

Mật mã học đòi hỏi những con số mà những người tấn công hay có thể gọi là hackers không thể dự đoán được Vì vậy mà chúng ta không thể cứ sử dụng những con số giống nhau lặp đi lặp lại mãi Chúng ta muốn tạo những con số theo một cách không thể dự đoán và như vậy những kẻ tấn công sẽ không thể đoán được chúng Những con số ngẫu nhiên này vì vậy rất cần cho ngành mật mã học, cho dù bạn đang mã hóa tệp của bạn hay đang sử dụng website HTTPS trên Internet

Có thể các bạn đều đang tự hỏi rằng một cái máy tính làm thế nào nó có thể tạo

ra những con số ngẫu nhiên Tính ngẫu nhiên nó đến từ đâu ?? Nếu như nó chỉ là 1 phần code trong máy tính, chẳng phải rằng những con số mà máy tính tạo ra đều có thể dự đoán được hay sao Vì vậy, việc tạo số ngẫu nhiên là vô cùng cần thiết ngày nay, đặc biệt là trong an ninh mạng

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

Trang 5

CHƯƠNG I: RANDOM NUMBER GENERATION LÀ GÌ ?

Random number generation (RNG) – bộ tạo số ngẫu nhiên là một thiết bị tính toán hoặc thiết bị vật lý được thiết kế để tạo ra một chuỗi các số hoặc ký hiệu không thể dự đoán trước được bằng các lựa chọn ngẫu nhiên

Các ứng dụng khác nhau của sự ngẫu nhiên đã dẫn đến sự phát triển của nhiều phương pháp khác nhau cho việc tạo ra các dữ liệu ngẫu nhiên, trong đó một số phương pháp đã tồn tại từ thời cổ đại, cụ thể với các ví dụ như việc tung xúc xắc, tung đồng xu, xáo bài, việc sử dụng cọng cỏ thi (đối với bói toán) trong Kinh Dịch, cũng như vô số các kỹ thuật khác Do tính chất cơ học của các kỹ thuật, việc tạo ra

số lượng lớn các số ngẫu nhiên (quan trọng trong thống kê) đòi hỏi một khối công việc lớn và thời gian dài Ngày nay, sau sự ra đời của máy phát số ngẫu nhiên, một

số lượng lớn xổ số do chính phủ điều hành và các trò chơi xổ số đã bắt đầu sử dụng RNG thay vì phương pháp vẽ truyền thống RNG cũng được sử dụng [của ai?] Để xác định tỷ lệ cá cược trong các máy tính hiện đại

Hiện nay, có rất nhiều phương pháp tính toán cho hệ số ngẫu nhiên tồn tại Trong đó, nhiều phương pháp thất bại trong việc đáp ứng cho các ngẫu nhiên đạt kết quả đúng Dù cho với các đáp ứng đó, cùng các xác suất thành công khác nhau, các bảng kiểm tra thống kê về tính ngẫu nhiên cũng không thể nào dự đoán được kết quả của chúng Tuy nhiên, vẫn có các thiết kế với phương pháp tính toán dựa trên mã hóa an toàn để tạo ra các số ngẫu nhiên, chẳng hạn như việc dựa trên các thuật toán Yarrow, Fortuna (PRNG), và một số thuật toán khác

Trang 6

CHƯƠNG II: TẠO SỐ GIẢ NGẪU NHIÊN

2.1 GIỚI THIỆU

Số giả ngẫu nhiên là một sự thay thế cho số ngẫu nhiên chuẩn Một máy tính có thể sử dụng một giá trị gốc và một thuật toán để có thể tạo ra các con số xuất hiện ngẫu nhiên, nhưng trên thực tế chúng có thể dự đoán được Máy tính không nhận bất kỳ một dữ liệu ngẫu nhiên nào từ môi trường Điều này rất khác với số ngẫu nhiên chuẩn

Có rất nhiều phương pháp đáng tin cậy để sinh các số giả ngẫu nhiên cho việc

mô phỏng ngẫu nhiên thông qua các bộ sinh số giả 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:

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ệ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ỉ

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ố giả ngẫu nhiên không ảnh hưởng đến giá trị của số kế tiếp

3 Dãy số giả 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

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ố giả 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

6 Trong việc taọ số giả 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

Trang 7

Chúng ta sẽ tìm hiểu một số phương pháp để tạo số giả 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,

2.2 THUẬT TOÁN TẠO RA CÁC SỐ GIẢ NGẪU NHIÊN

2.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ì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

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)

Trang 8

2.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ươ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= 2 k

> 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

2.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

Trang 9

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 c≠0, 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 (c≠0) 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í

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

8 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

9 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

Trang 10

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,

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

Trang 11

Đố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

Trang 12

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,

Trang 13

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

Trang 15

CHƯƠNG III: TẠO BIẾN NGẪU NHIÊN

3.1 GIỚI THIỆU

Để tạo ra một số ngẫu nhiên chuẩn, máy tính sẽ sử dụng thêm một vài các hiện tượng vật lý diễn ra bên ngoài môi trường Ví dụ, máy tính có thể lưu lại thời gian chính xác mà bạn gõ phím trên bàn phím của bạn như một cái nguồn dữ liệu không thể dự đoán hay mã hóa Giả sử như máy tính của bạn ghi dấu lại thời điểm bạn gõ phím là chính xác 0,23456789 giây sau 3 giờ chiều Kết hợp cái mốc thời gian chính xác đó với các phím được gõ, chúng ta sẽ có một nguồn cho việc mã hóa bạn có thể để tạo ra dãy số ngẫu nhiên Nó không phải là một dãy số có thể đoán được và những kẻ tấn công không thể dự đoán được khoảnh khắc bạn gõ phím Ở Linux, để tạo dãy số ngẫu nhiên chuẩn, máy tính sẽ thu thập thêm các dữ liệu từ việc chúng

ta sử dụng các ứng dụng, gõ phím hoặc thậm chí là di chuyển chuột Việc này giúp cho hệ thống có dữ liệu ngẫu nhiên mà nó cần để tạo số ngẫu nhiên chuẩn

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)

Ngày đăng: 01/07/2016, 12:53

HÌNH ẢNH LIÊN QUAN

Hình 2.1a pdf f(x) Hình 2.1b Nghịch đảo của F(x) - TẠO số NGẪU NHIÊN (RANDOM NUMBER GENERATION)
Hình 2.1a pdf f(x) Hình 2.1b Nghịch đảo của F(x) (Trang 16)
Hình 2.2 Phân phối đều - TẠO số NGẪU NHIÊN (RANDOM NUMBER GENERATION)
Hình 2.2 Phân phối đều (Trang 17)
Hình 2.4: Lấy mẫu từ phân phối  xác suất thực nghiệm riêng biệt. - TẠO số NGẪU NHIÊN (RANDOM NUMBER GENERATION)
Hình 2.4 Lấy mẫu từ phân phối xác suất thực nghiệm riêng biệt (Trang 23)
Hình 2.5: Biểu đồ biến ngẫu nhiên x - TẠO số NGẪU NHIÊN (RANDOM NUMBER GENERATION)
Hình 2.5 Biểu đồ biến ngẫu nhiên x (Trang 24)
Hình 2.6 Phân phối tích luỹ - TẠO số NGẪU NHIÊN (RANDOM NUMBER GENERATION)
Hình 2.6 Phân phối tích luỹ (Trang 24)
Hình 2.7 Hàm mật độ xác suất “Discretizing” - TẠO số NGẪU NHIÊN (RANDOM NUMBER GENERATION)
Hình 2.7 Hàm mật độ xác suất “Discretizing” (Trang 25)
Hình 2.8 Normalized - TẠO số NGẪU NHIÊN (RANDOM NUMBER GENERATION)
Hình 2.8 Normalized (Trang 25)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w