2013-08-13 67 views
5

Tôi đang cố gắng hiểu cách set.seed hoạt động trong R. Tôi hiểu nó, có thể tái tạo các mẫu ngẫu nhiên, nhưng tôi không biết sự khác biệt giữa set.seed(1)set.seed(123) là gì?Đối số của set.seed trong R

Đối số trong ngoặc có nghĩa là gì?

Trả lời

5

Các seed luận trong set.seed là một giá trị duy nhất, hiểu là một số nguyên (theo quy định tại help(set.seed()). Các seed trong set.seed sản xuất giá trị ngẫu nhiên mà là duy nhất cho seed đó (và sẽ cùng không phụ thuộc vào máy tính bạn chạy và do đó đảm bảo độ tái lập). Vì vậy, các giá trị ngẫu nhiên được tạo ra bởi set.seed(1)set.seed(123) sẽ không giống nhau nhưng các giá trị ngẫu nhiên được tạo ra bởi R trong máy tính của bạn sử dụng set.seed(1) và R trong máy tính của tôi sử dụng cùng một seed đều giống nhau.

set.seed(1) 
x<-rnorm(10,2,1) 
> x 
[1] 1.373546 2.183643 1.164371 3.595281 2.329508 1.179532 2.487429 2.738325 2.575781 1.694612 
set.seed(123) 
y<-rnorm(10,2,1) 
> y 
[1] 1.4395244 1.7698225 3.5587083 2.0705084 2.1292877 3.7150650 2.4609162 0.7349388 1.3131471 1.5543380 

> identical(x,y) 
[1] FALSE 
+0

Trước hết, cảm ơn rất nhiều vì đã giải thích nó theo cách đơn giản. Nhưng, làm cách nào để biết số nào phải là tham số? – trollster

+0

Không quan trọng bạn chọn số nào vì tất cả chúng đều tạo ra các giá trị ngẫu nhiên. – Metrics

3

T phần lớn các chương trình máy tính sử dụng các thuật toán xác định để tạo ra các số ngẫu nhiên (đó là lý do tại sao các số chúng tạo ra không thực sự ngẫu nhiên, nhưng giả ngẫu nhiên, đủ tốt cho hầu hết các mục đích). R không khác biệt, và bạn có thể nghĩ về các số ngẫu nhiên mà nó tạo ra như là một phần của một chuỗi rất dài các số "ngẫu nhiên", khi được triệu hồi, chỉ bắt đầu tại một số thời điểm và tạo ra số giả ngẫu nhiên cho bạn. Bằng cách sử dụng set.seed(), về cơ bản bạn sẽ cho chương trình một điểm khởi đầu thay vì để cho nó tự chọn. Đó là lý do tại sao bất kỳ người dùng nào đang chạy cùng một số hạt giống sẽ nhận được kết quả tương tự.

Bạn có thể chạy ?RNGkind để biết thêm thông tin về chủ đề.

+0

Rõ ràng, có một gói R được gọi là 'random' tạo ra các biến ngẫu nhiên thực sự. Chưa thử nghiệm nó (như tôi đã nói, giả ngẫu nhiên thường đủ tốt): http://dirk.eddelbuettel.com/code/random.html –

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