2010-10-26 59 views
8

Đưa ra một loạt dữ liệu được tạo ngẫu nhiên làm thế nào tôi có thể tìm ra ngẫu nhiên nó thực sự như thế nào? R-lang là một công cụ tốt cho MATLAB này? Các câu hỏi khác có thể làm những công cụ này có thể trả lời về dữ liệu được tạo ngẫu nhiên? Có công cụ nào tốt hơn cho việc này không?Phân tích số ngẫu nhiên

+7

Bắt buộc: http://www.random.org/analysis/dilbert.jpg –

+1

Chạy --- đừng đi bộ --- đến hiệu sách và mua Knuth's Art of Computer Programming, volume II, Semi-Numerical Thuật toán. Cho đến khi bạn đọc điều đó, bạn chỉ đang bay mù. –

+3

Bắt buộc: http://xkcd.com/221/ – CanSpice

Trả lời

10

Các DieHarder test battery bởi Robert G. Brown --- mà reimplements và mở rộng cực đoan cũ bằng Marsaglia et al - đã được bọc vào R gói RDieHarder mà bạn có thể bắt đầu.

Lưu ý rằng RDieHarder phiên bản cần kết hợp cụ thể với các phiên bản DieHarder - và chúng tôi chưa có phiên bản phát triển mới nhất của phiên bản sau.

Sửa Ngoài ra, đối với tập hợp con của kiểm tra cryptographioic, bộ NIST (được bao gồm trong DieHarder) nên phù hợp theo đó là những gì nó được thiết kế cho.

3

Tôi khuyên bạn nên đọc Chapter 10 của Beautiful Testing: Thử nghiệm Trình tạo số ngẫu nhiên. Đó là một chút dễ tiếp cận hơn so với hầu hết các văn bản về chủ đề này. Có lẽ, nếu chúng ta tốt đẹp, tác giả của chương đó, John Cook, có thể dừng lại và đưa ra ý kiến ​​của anh ấy.

+2

JD: Tôi đã thêm một liên kết đến chương đó. –

4

Theo Wikipedia (Randomness):

Ý tưởng trung tâm là một chuỗi các bit là ngẫu nhiên khi và chỉ khi nó là ngắn hơn so với bất kỳ chương trình máy tính có thể sản xuất chuỗi (Kolmogorov ngẫu nhiên) - điều này có nghĩa là các chuỗi ngẫu nhiên là những chuỗi không thể được nén .

Do đó, cho dòng ngẫu nhiên các số, lưu vào một tệp và nén bằng công cụ yêu thích của bạn (zip, rar, ...). Tỷ lệ nén có thể được hiểu là thước đo ngẫu nhiên ... Thậm chí tốt hơn, tôi sẽ sử dụng nó như một điểm số tương đối để so sánh sự ngẫu nhiên của hai chuỗi dữ liệu.

1

Đối với lý thuyết, tham chiếu được đề cập ở trên bởi Knuth là hữu ích và để liên kết phản ứng của Amro, có tác phẩm của Li & Vitanyi có liên quan ở đây. link text

+0

Cilibrasi đã làm một số công việc liên quan đến việc thực hiện ý tưởng trên các dòng này, tuy nhiên mã không phải là một gói/hộp công cụ R/MATLAB đơn giản. –

5

Trước tiên, bạn cần phải quyết định loại thử nghiệm ngẫu nhiên nào. Bạn có trong tâm trí một phân phối thống nhất bên trong một số phạm vi? Đó thường là những gì mọi người có trong tâm trí, mặc dù bạn có thể có một số hương vị ngẫu nhiên khác như phân phối bình thường.

Khi bạn có phân phối ứng cử viên, bạn có thể kiểm tra sự phù hợp với phân phối đó. Các thử nghiệm Kolmogorov-Smirnov là một thử nghiệm mục đích chung tốt. Tôi tin rằng nó được gọi là ks.test trong R. Nhưng tôi cũng tin rằng nó giả định các giá trị riêng biệt, do đó có thể là một vấn đề nếu bạn lấy mẫu từ một phạm vi giá trị nhỏ như vậy mà cùng một giá trị xuất hiện nhiều lần.

S. Lott đề cập đến Knuth's Seminumerical Algorithms trong phần nhận xét. Cuốn sách đó có phần giới thiệu tốt về bài kiểm tra chi bình phương và bài kiểm tra Kolmogorov-Smirnov cho sự phù hợp.

Nếu bạn nghi ngờ bạn có giá trị ngẫu nhiên đồng nhất, kiểm tra DIEHARD mà Dirk Eddelbuettel đã đề cập là một thử nghiệm tiêu chuẩn.

+0

Tôi đã đề cập đến * DieHarder * khác với DIEHARD mà nó tái hiện và mở rộng với một loạt các bài kiểm tra không được tìm thấy trong DIEHARD, bao gồm một số từ NIST và một số Robert và cộng tác viên đã làm việc. –

+0

Xin lỗi, tôi đã bỏ lỡ điều đó. Tôi thích bộ phim Bruce Willis. :) –

+0

Yup. Robert là một chàng trai vui vẻ. –

Các vấn đề liên quan