Trường Đại Học Bách Khoa Hà Nội Khoa Điện Tử Viễn Thông ====o0o====
BÁO CÁO ĐỒ ÁN 1 Đề tài:
SỐ GIẢ NGẤU NHIÊN
Giảng viên hướng dẫn : Phạm Việt Thành Sinh viên thực hiện
: Nguyễn Mạnh Sinh
MSSV: 20136310
Đặng Ngọc Sơn
MSSV: 20125752
Hà Nội, 11/2015
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN
Lời cảm ơn Trong suốt quá trình thực hiện đồ án 1 nhóm chúng em đã nhận được rất
nhiều sự giúp đỡ của thầy cô,bạn bè.Em xin gửi lời cảm ơn sâu sắc đến thầy Phạm Việt Thành,thầy đã trực tiếp hướng dẫn,giúp đỡ chúng em trong suốt quá trình thực hiện đề tài.Do thời gian có hạn nên đề tài còn nhiều thiếu sót chưa áp dụng nhiều vào thực tế,rất mong nhận được thêm nhiều sự góp ý của thầy. Sau cùng,em xin kính chúc thầy dồi dào sức khỏe,niềm tin để thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau. Trân trọng.
2
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN
MỤC LỤC Chương 1: Mở đầu 1.1. Giới thiệu số giả ngẫu nhiên 1.2. Ứng dụng của số giả ngẫu nhiên 1.3. Kết luận sau quá trình nghiên cứu sơ bộ
Chương 2: Giới thiệu công nghệ 2.1. Ngôn ngữ lập trình 2.2. Môi trường lập trình
Chương 3: Thiết kế hệ thống 3.1. Yêu cầu đề bài 3.2 . Thuật toán tạo số giả ngẫu nhiên 3.3. Giao diện phần mềm
Chương 4: Triển khai 4.1. Phân công công việc
4.2. Dowload và cài đặt các phần mềm cần sử dụng 4.3. Tạo giao diện phần mềm 4.4. Lập Trình
Chương 5: Thử nghiệm 5.1. Kiểm tra sự chính xác của thuật toán 5.2. Kiểm tra phần mềm
KẾT LUẬN
3
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN
CHƯƠNG 1: MỞ ĐẦU 1.1 Giới thiệu về số giả ngẫu nhiên Số giả ngẫu nhiên hiểu theo nghĩa 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à 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 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. 1.2 Ứng dụng của số giả 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ã hóa và giải mã thông tin,ví dụ thuật toán mã hóa khóa như RSA,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ấc 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 khố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 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. 1.3 Kết luận sau quá trình nghiên cứu sơ bộ Sau quá trình nghiên cứu sơ bộ đề tài chúng em thấy số giả ngẫu nhiên là một đề tài hay,có nhiều ứng dụng thiết thực trong thực tế.Chúng em quyết định lựa chon đề tài tạo số giả ngẫu nhiên để thực hiện trong đồ án 1.
CHƯƠNG 2: GIỚI THIỆU VỀ CÔNG NGHỆ 2.1 Ngôn ngữ lập trình a. Ngôn ngữ JAVA 4
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN
Ngôn ngữ hoàn toàn hướng đối tượng. Ngôn ngữ đa nền cho phép một chương trình có thể thực thi trên các hệ điều hành khác nhau (MS Windows, UNIX, Linux) mà không phải biên dịch lại chương trình. Phương châm của java là "Viết một lần , Chạy trên nhiều nền" (Write Once, Run Anywhere). Ngôn ngữ đa luồng, cho phép trong một chương trình có thể có nhiều luồng điều khiển được thực thi song song nhau, rất hữu ích cho các xử lý song song. Ngôn ngữ phân tán, cho phép các đối tượng của một ứng dụng được phân bố và thực thi trên các máy tính khác nhau. Ngôn ngữ động, cho phép mã lệnh của một chương trình được tải từ
một máy tính về máy của người yêu cầu thực thi chương trình. Ngôn ngữ an toàn, tất cả các thao tác truy xuất vào các thiết bị vào ra đều thực hiện trên máy ảo nhờ đó hạn chế các thao tác nguy hiểm cho máy tính thật. Ngôn ngữ đơn giản, dễ học, kiến trúc chương trình đơn giản, trong sáng. b. Khả năng của ngôn ngữ JAVA Là một ngôn ngữ bậc cao như C, C++, Perl, SmallTalk,.. cho nên có thể được dùng để tạo ra các ứng dụng để giải quyết các vấn đề về số, xử lý văn bản, tạo ra trò chơi, và nhiều thứ khác. Có các môi trường lập trình đồ họa như Visual Java, Symantec Cafe, Jbuilder, Jcreator, ... Có khả năng truy cập dữ liệu từ xa thông qua cầu nối JDBC (Java DataBase Connectivity) Hỗ trợ các lớp hữu ích, tiện lợi trong lập trình các ứng dụng mạng (Socket) cũng như truy xuất Web. Hỗ trợ lập trình phân tán (Remote Method Invocation ) cho phép một ứng dụng có thể được xử lý phân tán trên các máy tính khác nhau. Và luôn được bổ sung các tính năng cao cấp khác trong các phiên bản sau. 2.2 Môi trường lập trình Android Studio, môi trường lập trình phát triển ứng dụng mới vừa được giới thiệu tại Google I/O 2013. Dựa trên “IntelliJ IDEA Community Edition”, công cụ này cho phép tạo ứng dụng, dễ dàng thực hiện các thay đổi và xem trước trong thời gian thực, đồng thời cũng có khả năng tăng tốc sản phẩm, thiết kế giao diện đẹp hơn trước. Đặc biệt là tiếng Việt cũng được hỗ trợ trong Android Studio.
5
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN
CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 3.1 Yêu cầu đề tài Viết phần mềm tạo một số giả ngẫu nhiên hiện ra màn hình. 3.2 Thuật toán tạo số giả ngẫu nhiên Có rất nhiều phương pháp tạo số giả ngẫu nhiên khác nhau như đồng dư tuyến tính,nửa bình phương,đồng dư cộng…hoặc ta có thể trực tiếp sử dụng các hàm của lớp Random được cung cấp có sẵn trong Java.Tuy nhiên do đề tài không yêu cầu hệ thống quá phức tạp và số chữ số trong số giả ngẫu nhiên không cần quá lớn nên nhóm đề xuất sử dụng phương pháp đo số nano giây chạy trong một đoạn chương trình của hệ thong.Do nhiều yếu tố tác động nên mỗi lần chạy phần mềm sẽ tốn một khoảng thời gian khác nhau suy ra thời gian chạy một đoạn chương trình cũng thay đổi sau mỗi lần chương trình chạy.Từ khoảng thời gian vừa đo được ta nhân với một số bất kì (do người lập trình ) để kết quả lớn hơn.Để tạo số ngẫu nhiên với N chữ số,ta có thể cắt dãy số trên lấy N chữ số.. 3.3 Giao diện phần mềm Phần mềm sẽ gồm 2 màn hình: -Màn hình 1 bật khi khởi động phần mềm sẽ có 2 button,button “Bắt đầu” để chuyển đến màn hình 2,nếu không muốn tiếp tục nhấn button “Exit”. -Màn hình 2 sẽ gồm một edittext để nhập số chữ số muốn hiển thị trong số giả ngẫu nhiên,một dòng hiển thị số giả ngẫu nhiên,một button ”Back” để quay lại màn hình 1.
CHƯƠNG 4: TRIỂN KHAI 4.1 Phân công công việc CÔNG VIỆC
NGƯỜI THỰC HIỆN
Tìm hiểu thuật toán,viết slide
Đặng Ngọc Sơn
Tìm hiểu phần mềm viết code
Nguyễn Mạnh Sinh
Viết Báo cáo
Cả nhóm 6
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN
Trình bày slide và báo cáo
Cả nhóm
4.2 Dowload và cài đặt các phần mềm cần sử dụng 4.3 Tạo giao diện phần mềm -Code màn hình 1: <RelativeLayout xmlns:android=" />xmlns:tools=" />android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"
public void onClick(View v) { Intent t2 = new Intent(Man_Hinh_Chinh.this, MainActivity.class); startActivity(t2); } }); j=System.nanoTime(); bt21.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SoChuSo(); ngaunhien(); String u=String.valueOf(k); if(x>0&&y>0) { String a = u.substring(x, y); tv23.setText(a); } else tv23.setText("Nhập số từ 1 đến 9.Xin nhập lại!"); } }); } public void SoChuSo() { b=Integer.parseInt(et21.getText().toString()); switch (b) { case 1: x=8; y=9; break; case 2:
x = 5; y = 7; break;
11
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN case 3: x = 5; y = 8; break; case 4: x = 5; y = 9; break; case 5: x = 6; y = 11; break; case 6: x = 5; y = 11; break; case 7: x = 4; y = 11; break; case 8: x = 3;
y = 11; break; case 9: x = 3; y = 12; break; default: x=0; y=0; break; } } public long ngaunhien() { i=System.nanoTime(); k=220895*(i-j); return k; }
CHƯƠNG 5: THỬ NGHIỆM 5.1 Kiểm tra sự chính xác của thuật toán thuật toán -Thuật toán kiểm tra +Giả sử cần tạo số giả ngẫu nhiên có 2 chữ số. +Thực hiện thuật toán 100000 lần. +Đếm số lần xuất hiện của các số từ 0->99. +Số lần xuất hiện của các số trên là như nhau thuật toán đúng. +Ngược lại thuật toán sai. -Kết quả kiểm tra thuật toán +Số lần xuất hiện của các số giao động trong khoảng
12
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN
950 đến 1050. -Kết luận:Thuật toán đúng. -Đồ thị minh họa:
Trong đó: +Trục hoành là các số từ 1->99. +Trục tung là số lần xuất hiện của các số tương ứng. 5.2 Kiểm tra phần mềm -Hình ảnh phần mềm:
13
ĐỒ ÁN I-SỐ GIẢ NGẪU NHIÊN
KẾT LUẬN: -Qua quá trình thực hiện chúng em đã hiểu rõ hơn về phương thức tạo số giả ngẫu nhiên,biết cách sử dụng các phần mềm Android Studio và ngôn ngữ lập trình Java trong android,do thời gian có hạn nên phần mềm của chúng em vẫn còn nhiều thiếu sót và chưa có nhiều ứng dụng,rất mong nhận được sự giúp góp ý của thầy cô để chúng em tiếp tục phát triển những ứng dụng của phần mềm Em xin chân thành cảm ơn!
PHỤ LỤC
TÀI LIỆU THAM KHẢO 1. />%E1%BA%ABn_th%E1%BB%B1c_h%C3%A0nh_Android 14