Đầu tiên, không có sự ngẫu nhiên thực sự trong máy tính ngày nay tạo ra "số ngẫu nhiên". Tất cả các trình tạo giả ngẫu nhiên sử dụng các phương pháp xác định. (Có thể, máy tính lượng tử sẽ thay đổi điều đó.)
Nhiệm vụ khó khăn là tạo ra các thuật toán tạo ra đầu ra không thể phân biệt một cách có ý nghĩa với dữ liệu đến từ một nguồn thực sự ngẫu nhiên.
Bạn đúng khi đặt hạt giống bắt đầu bạn tại một điểm bắt đầu được biết đến cụ thể trong một danh sách dài các số giả danh. Đối với các trình tạo được triển khai trong R, Python, v.v., danh sách này cực kỳ dài. Đủ lâu để thậm chí dự án mô phỏng khả thi lớn nhất sẽ không vượt quá 'thời gian' của trình tạo để các giá trị bắt đầu chu kỳ lại.
Trong nhiều ứng dụng thông thường, mọi người không đặt hạt giống. Sau đó, một hạt giống không thể đoán trước được chọn tự động (ví dụ: từ micro giây trên đồng hồ hệ điều hành). Các trình tạo giả ngẫu nhiên trong sử dụng chung đã phải chịu các thử nghiệm về pin, phần lớn bao gồm các vấn đề được chứng minh là khó mô phỏng với các trình tạo không đạt yêu cầu trước đó.
Thông thường, đầu ra của một trình tạo bao gồm các giá trị không, với mục đích thực tế, có thể phân biệt với các số được chọn thực sự ở dạng ngẫu nhiên, phân phối đồng đều trên Sau đó, các số giả ngẫu nhiên đó được thao tác sao cho khớp với những gì người ta sẽ lấy mẫu một cách ngẫu nhiên từ các phân phối khác như nhị thức, Poisson, bình thường, hàm mũ, v.v.( 0 , 1 ) .
Một thử nghiệm của máy phát điện là xem các cặp liên tiếp của nó trong 'các quan sát' được mô phỏng như
thực sự trông giống như chúng đang lấp đầy hình vuông đơn vị một cách ngẫu nhiên. (Thực hiện hai lần dưới đây.) Cái nhìn hơi giống nhau là kết quả của sự biến đổi vốn có. Sẽ rất đáng ngờ khi có được một cốt truyện trông hoàn toàn đồng nhất màu xám. [Tại một số độ phân giải, có thể có một mẫu moire thông thường; vui lòng thay đổi độ phóng đại lên hoặc xuống để loại bỏ hiệu ứng không có thật đó nếu nó xảy ra.]Unif(0,1)
set.seed(1776); m = 50000
par(mfrow=c(1,2))
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
par(mfrow=c(1,1))
Nó đôi khi hữu ích để thiết lập một hạt giống. Một số cách sử dụng như sau:
Khi lập trình và gỡ lỗi , thuận tiện để có đầu ra dự đoán. Vì vậy, nhiều lập trình viên đưa ra một set.seed
tuyên bố khi bắt đầu một chương trình cho đến khi viết và gỡ lỗi được thực hiện.
Khi dạy về mô phỏng. Nếu tôi muốn cho học sinh thấy rằng tôi có thể mô phỏng các cuộn chết bằng cách sử dụng sample
hàm trong R, tôi có thể gian lận, chạy nhiều mô phỏng và chọn một mô phỏng gần nhất với giá trị lý thuyết mục tiêu. Nhưng điều đó sẽ cho một ấn tượng không thực tế về cách mô phỏng thực sự hoạt động.
Nếu tôi đặt hạt giống khi bắt đầu, mô phỏng sẽ nhận được kết quả tương tự mỗi lần. Học sinh có thể đọc lại bản sao chương trình của tôi để đảm bảo nó mang lại kết quả như mong muốn. Sau đó, họ có thể chạy mô phỏng của riêng mình, bằng hạt giống của mình hoặc bằng cách để chương trình chọn nơi bắt đầu.
3/36=1/12=0.08333333.
2(1/12)(11/12)/106−−−−−−−−−−−−−−−√=0.00055.
set.seed(703); m = 10^6
s = replicate( m, sum(sample(1:6, 2, rep=T)) )
mean(s == 10)
[1] 0.083456 # aprx 1/12 = 0.0833
2*sd(s == 10)/sqrt(m)
[1] 0.0005531408 # aprx 95% marg of sim err.
Khi chia sẻ các phân tích thống kê liên quan đến mô phỏng.
Ngày nay, nhiều phân tích thống kê liên quan đến một số mô phỏng, ví dụ thử nghiệm hoán vị hoặc bộ lấy mẫu Gibbs. Bằng cách hiển thị hạt giống, bạn cho phép những người đọc phân tích sao chép chính xác kết quả, nếu họ muốn.
Khi viết bài báo học thuật liên quan đến ngẫu nhiên. Các bài báo học thuật thường trải qua nhiều vòng đánh giá ngang hàng. Một âm mưu có thể sử dụng, ví dụ, các điểm bị xáo trộn ngẫu nhiên để giảm quá mức. Nếu các phân tích cần được thay đổi một chút để phản hồi các bình luận của người đánh giá, thật tốt nếu một sự xáo trộn không liên quan cụ thể không thay đổi giữa các vòng đánh giá, điều này có thể gây khó chịu cho những người đánh giá đặc biệt khó chịu, vì vậy bạn đặt hạt giống trước khi bị xáo trộn.
2^19937 − 1
. Hạt giống là điểm của chuỗi cực kỳ dài này, nơi máy phát bắt đầu. Vì vậy, có, nó là xác định.