Tiểu luận môn Cơ sở mô ngẫu nhiên Phần Mở đầu Trong hoạt động sống, nghiên cứu học tập, cần đến ngẫu nhiên đại lợng Nh đà biết, có nhiều ứng dụng phải sử dụng số ngẫu nhiên Một số thuật toán mật mÃ, với mục đích mà hóa thông điệp ®Ĩ chØ cã ngêi nhËn míi ®ỵc dïng chóng Mn phải làm cho thông điệp nh ngẫu nhiên cách dùng chuỗi giả ngẫu nhiên để mà hóa với chuỗi ngời nhận giải mà đợc Một lĩnh vực khác đợc sử dụng rộng rÃi số ngẫu nhiên mô Một mô đặc trng bao gồm chơng trình mô tả số khía cạnh giới thực Các số ngẫu nhiên lại thích hợp làm liệu nhập cho chơng trình nh Ngay không cần số ngẫu nhiên, mô cần số tùy ý dùng làm liƯu nhËp NhiỊu øng dơng ph©n tÝch mét sè lợng lớn liệu, cần xử lý tập nhỏ nó, cần lựa chọn theo kiểu thử ngẫu nhiên Có nhiều phơng pháp để sinh số ngẫu nhiên Tiểu luận đa hai phơng pháp có phơng pháp đồng d tuyến tính đồng d cộng Không thể dùng máy vi tính để sinh đợc chuỗi sè ngÉu nhiªn thùc sù, chóng ta chØ hy väng tạo chuỗi có nhiều thuộc tính giống nh chuỗi số ngẫu nhiên Các số đợc gọi số giả ngẫu nhiên Có nhiều phơng pháp để kiểm tra xem chuỗi giả ngẫu nhiên có số thuộc tính chuỗi ngẫu nhiên hay không Tiểu luận trình bày phơng pháp kiểm tra phơng pháp bình phơng Nội dung tiểu luận gồm ba phần: Phần 1: Đa số khái niệm số ngẫu nhiên số giả ngẫu nhiên Phần 2: Giới thiệu hai phơng pháp để tạo số ngẫu nhiên: phơng pháp đồng d tuyến tính phơng pháp đồng d cộng Phần 3: Trình bày phơng pháp bình phơng nhằm kiểm tra tính ngẫu nhiên chuỗi đợc sinh Tiểu luận nhằm mục đích giới thiệu thuật toán kỹ thuật để dùng máy vi tính tạo số ngẫu nhiên kiểm tra tính ngẫu nhiên số đợc tạo Để cài đặt cho thuật toán tiểu luận này, sử dụng ngôn ngữ lập trình Pascal Học viên: Lê Thủy Th¹ch-Líp Cao häc Tin häc khãa 2004-2006 TiĨu ln môn Cơ sở mô ngẫu nhiên Phần Nội dung I/ Số ngẫu nhiên số giả ngẫu nhiên Thông thờng ngời ta dùng thuật ngữ ngẫu nhiên muốn nói đến tùy ý Một ngời yêu cầu số ngẫu nhiên, nghĩa không quan tâm đến giá trị số Tuy nhiên, số ngẫu nhiên khái niệm toán học đợc định nghĩa số có khả xuất tơng đơng Để đáp ứng đợc định nghĩa số ngẫu nhiên trên, phải giới hạn số đợc dùng vào phạm vi định Không thể có số nguyên ngẫu nhiên mà có số nguyên ngẫu nhiên miền xác định Trong hầu hết trờng hợp ta cần số ngẫu nhiên, mà cần đến dÃy số ngẫu nhiên Khi cần phải chứng minh nhiều mặt thuộc tính dÃy số ngẫu nhiên Ví dụ chuỗi dài số ngẫu nhiên mét ph¹m vi nhá, chóng ta cã thĨ mn biÕt số lần xuất giá trị chuỗi Không có cách để tạo số ngẫu nhiên thực từ máy vi tính Bởi ta viết chơng trình tạo số ngẫu nhiên số mà chơng trình tạo chắn suy luận đợc Cách tốt mà hy vọng viết chơng trình để tạo chuỗi số có đợc nhiều thuộc tính giống nh số ngẫu nhiên Các số thờng đợc gọi số giả ngẫu nhiên Chúng không thật ngẫu nhiên nhng chúng hữu dụng nh xấp xỉ số ngẫu nhiên Tiểu luận trình bày phơng pháp tạo số ngẫu nhiên máy vi tính nên mức độ đó, từ ta thống số giả ngẫu nhiên với số ngẫu nhiên Có nhiều phơng pháp để sinh chuỗi số nh Chẳng hạn phơng pháp đồng d tuyến tính, phơng pháp đồng d cộng, phơng pháp đồng d toàn phơng Các phơng pháp phải đáp ứng đợc yêu cầu sau: -Những số đợc sinh phải phân bố độc lập mặt thống kê Giá trị số chuỗi ngẫu nhiên không liên quan đến giá trị số Chuỗi phải không đợc lặp lại độ dài -Tốc độ sinh số ngẫu nhiên phải nhanh Bởi trình mô thực thờng yêu cầu số lợng lớn số ngẫu nhiên Nếu công cụ sinh chậm chi phí thực mô cao -Thuật toán để sinh số ngẫu nhiên sử dụng nhớ tốt Bởi chơng trình mô thờng yêu cầu nhớ lớn nhng nhớ thờng bị giới hạn Trong số trờng hợp, số thuộc tính số ngẫu nhiên quan trọng thuộc tính lại không cần thiết Trong trờng hợp đó, cần tạo số gần ngẫu nhiên, chúng chắn có thuộc tính mong Học viên: Lê Thủy Thạch-Lớp Cao học Tin học khóa 2004-2006 Tiểu luận môn Cơ sở mô ngẫu nhiên muốn nhng cha có thuộc tính khác Trong số ứng dụng, số gần ngẫu nhiên thích hợp số giả ngẫu nhiên Có nhiều phơng pháp để kiểm tra xem chuỗi giả ngẫu nhiên có số thuộc tính chuỗi ngẫu nhiên hay không Chẳng hạn phơng pháp kiểm tra số ngẫu nhiên theo luật phân phối đều, phân phối chuẩn, phân phối mũ Trong phần ta xem xét cụ thể hai phơng pháp sinh số ngẫu nhiên phơng pháp kiểm tra tính ngẫu nhiên chuỗi đợc sinh II/ Các phơng pháp tạo số ngẫu nhiên Nhiều công trình nghiên cứu nhằm đa thuật toán sinh chuỗi số giả ngẫu nhiên Thuật toán không khó kỹ thuật mà khó tốc độ sinh số ngẫu nhiên, độ dài vòng lặp, tính xác chơng trình Phần giới thiệu hai phơng pháp thông dụng phơng pháp đồng d tuyến tính phơng pháp đồng d cộng 1/ Phơng pháp đồng d tuyến tính Phơng pháp đồng d tuyến tính đợc D Lehner đề xuất vào năm 1951 Đây phơng pháp tiếng thờng đợc sử dụng để tạo số ngẫu nhiên Phơng pháp đợc đặc trng công thức đệ quy sinh sè thø n+1 dùa trªn sè thø n nh sau: an+1=(b*an + c) mod m (n0) Giá trị khởi đầu lµ h»ng sè a 0, h»ng sè b lµ mét số nhân, số c số gia m số chia (modulus) Sự lựa chọn giá trị số có ảnh hởng đến độ dài chu kỳ chuỗi số ngẫu nhiên đợc sinh Ta thấy, phơng pháp số chuỗi đợc sinh mối quan hệ đệ quy Để tạo số ngẫu nhiên mới, ta dùng số trớc nhân với b, cộng thêm c, chia cho m lấy phần d Nh số nhận đợc nằm đoạn từ đến m-1 Ví dụ 1: Cho b=2, c=3, m=10 a0=0 ta cã a0=0 a1=(2*0+3) mod 10=3 a2=(2*3+3) mod 10=9 a3=(2*9+3) mod 10=1 a4=(2*1+3) mod 10=5 a5=(2*5+3) mod 10=3 a6=(2*3+3) mod 10=9 a7=(2*9+3) mod 10=1 a8=(2*1+3) mod 10=5 VÝ dô 2: Cho b=2, c=0, m=10 a0=1 ta có Học viên: Lê Thủy Thạch-Lớp Cao học Tin học khóa 2004-2006 Tiểu luận môn Cơ sở mô ngẫu nhiên a0=1 a1=(2*1) mod 10=2 a2=(2*2) mod 10=4 a3=(2*4) mod 10=8 a4=(2*8) mod 10=6 a5=(2*6) mod 10=2 a6=(2*2) mod 10=4 a7=(2*4) mod 10=8 a8=(2*8) mod 10=6 Trong vÝ dô minh họa trờng hợp c=0 Thuật toán đợc gọi phơng pháp đồng d nhân Nếu c0 thuật toán đợc gọi phơng pháp đồng d hỗn hợp Cả hai ví dụ minh họa khả lặp lại của chuỗi đợc sinh lợc đồ Thuật toán thích hợp sử dụng máy vi tính để tạo số ngẫu nhiên dễ cài đặt Dới đoạn chơng trình tạo N số ngẫu nhiên cho mảng A Program tao_mang_ngau_nhien; type mmc=array[1 1000] of word; Var a:mmc; c,m,i:word; Begin c:=3; m:=10 a[0]:=0; for i:=1 to 100 a[i]:=(a[i-1]*b+c) mod m; end Để có đợc số ngẫu nhiên tốt, phải có cách chọn số a0, b m Nhiều tài liệu đà cung cấp số hớng dẫn việc chọn số Trớc hết m nên lớn, chu kỳ luôn nhỏ m nên m lớn lặp lại số m giá trị tối đa kiểu nguyên nhng không cần phải hoàn toàn lớn nh không tiện Thông thờng, chọn m lũy thừa 10 thuận lợi việc tính toán đồng d Thứ hai chọn b c: Một chuỗi đợc sinh sơ đồ đồng d tuyến tính có chu kú m nÕu vµ chØ nÕu: - c lµ nguyên tố với m - b-1 bội sè cđa mäi sè nguyªn tè chia cho m - b-1 lµ béi cđa nÕu m lµ béi cđa Học viên: Lê Thủy Thạch-Lớp Cao học Tin học khóa 2004-2006 Tiểu luận môn Cơ sở mô ngẫu nhiên Những ràng buộc dẫn đến giá trị số nhân có dạng b=z p+1, z số đợc dùng biểu diễn số máy tính, k số lợng bít tối đa kiểu nguyên, m=zk zp