2012-07-19 57 views
6

Có ai có bất kỳ trải nghiệm nào với các tình huống trong đó set.seed cung cấp các kết quả khác nhau tùy thuộc vào hệ điều hành (OS) hay không. Tôi nhớ đã tình cờ gặp một tình huống tương tự trong một lớp học trên R trước khi một số người tạo ra các chuỗi ngẫu nhiên khác nhau bằng cách sử dụng rnorm mặc dù đã đặt hạt giống bắt đầu thành cùng một giá trị. Bây giờ, tôi tự đưa ra một khóa học và không gặp phải vấn đề tương tự với rnorm; tất cả các sinh viên của tôi nhận được cùng một chuỗi bất kể hệ điều hành. Thật thú vị, cùng một vấn đề dường như tồn tại với chức năng mvrnorm của gói MASS.Tạo số ngẫu nhiên khác nhau giữa OS

Bất kỳ cái nhìn sâu sắc sẽ được đánh giá rất nhiều - Marc

Ví dụ này:

require(MASS) 
set.seed(123) 
a <- rnorm(10, mean=10, sd=3) 
b <- rnorm(10, mean=5, sd=2) 
df <- data.frame(a,b) 
C <- cov(df) 
M <- mvrnorm(n=10, c(10,5), C) 

df 
C 
M 

Sản lượng trên Windows 7 hệ điều hành phiên bản 64-bit của tôi về R 2.14.1 .:

> df 
      a  b 
1 8.318573 7.448164 
2 9.309468 5.719628 
3 14.676125 5.801543 
4 10.211525 5.221365 
5 10.387863 3.888318 
6 15.145195 8.573826 
7 11.382749 5.995701 
8 6.204816 1.066766 
9 7.939441 6.402712 
10 8.663014 4.054417 
> C 
     a  b 
a 8.187336 3.431373 
b 3.431373 4.310385 
> M 
       a  b 
[1,] 13.270535 6.158603 
[2,] 10.375011 5.737871 
[3,] 13.514105 5.476411 
[4,] 12.681956 5.020646 
[5,] 12.352333 4.927746 
[6,] 15.177508 6.810387 
[7,] 8.114377 2.925225 
[8,] 9.529744 4.834451 
[9,] 12.903550 7.232715 
[10,] 6.251907 3.481789 

Chỉnh sửa: Nó có thể hữu ích để biết nếu có ai không nhận được những kết quả này và những gì hệ điều hành hoặc các phiên bản của R đã được sử dụng.

+0

Bạn có đang sử dụng cùng phiên bản R và/hoặc cùng một RNGkind không? – Dason

+0

@ Dason - Không, tôi không nghĩ vậy. Trong một số trường hợp, chúng có thể có phiên bản R mới hơn bản thân tôi. Nhưng tôi nghĩ, ngay cả giữa các sinh viên, họ đã nhận được kết quả khác nhau và hệ điều hành có vẻ giống như một mẫu số chung có thể. –

+1

Không, không. R tạo ra các RNG chính nó, và sự khác biệt duy nhất có thể có thể phân hủy ma trận cần thiết nếu bạn làm 'mvrnorm' - và đó có thể là do các thư viện LAPACK/BLAS. Nếu bạn vẽ các vector liên tiếp, tôi chắc chắn bạn sẽ nhận được cùng một số. R chú ý đến những điều này. –

Trả lời

0

Tôi đã nghe nói về những người thay đổi RNGKind, đôi khi không nhận ra nó bằng cách tải và chạy một gói đã thay đổi trình tạo hoặc một số tập lệnh khác đã thực hiện thay đổi. Nếu đúng như vậy thì cùng một hạt giống sẽ dẫn đến các số ngẫu nhiên khác nhau. Một hoạt động mới của R (không tải các gói khác nhau hoặc các tập lệnh khác) sẽ tạo ra các số ngẫu nhiên giống nhau từ cùng một hạt giống.

+3

Cũng có thể chạy 'rm (list = ls (all.names = TRUE))' điều đầu tiên khi mở phiên R, trong trường hợp một '.Random.seed' nằm xung quanh từ một vùng làm việc đã lưu trước đó. –

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