2013-02-04 34 views
9

Tôi muốn chọn ngẫu nhiên n hàng từ tập dữ liệu của mình bằng cách sử dụng chức năng sample() trong R. Tôi đã nhận được kết quả đầu ra khác nhau mỗi lần và do đó được sử dụng set.seed() chức năng để có được cùng một đầu ra. Tôi biết rằng mỗi số nguyên trong set.seed() sẽ cho tôi một đầu ra duy nhất và đầu ra sẽ giống nhau nếu đặt cùng một hạt giống. Nhưng tôi không thể tìm ra số nguyên được chuyển như một tham số cho hàm set.seed(). Nó chỉ là một chỉ số đi vào thuật toán máy phát ngẫu nhiên hay nó có nghĩa là một phần dữ liệu từ nơi bạn bắt đầu lấy mẫu? Ví dụ: 2 trong số set.seed(2) có nghĩa là gì?Số nguyên trong khi đặt hạt giống là gì?

Trả lời

6

Hạt giống ngẫu nhiên (hoặc trạng thái hạt giống hoặc chỉ hạt giống) là số (hoặc vectơ) được sử dụng để khởi tạo trình tạo số giả ngẫu nhiên.

Đối với hạt giống được sử dụng trong trình tạo số giả ngẫu nhiên, nó không cần phải ngẫu nhiên. Bởi vì bản chất của thuật toán tạo số, miễn là hạt giống gốc bị bỏ qua, phần còn lại của các giá trị mà thuật toán tạo ra sẽ theo phân bố xác suất theo cách giả tạo.

- wikipedia

Vì vậy, chức năng ngẫu nhiên có thể được thực hiện như thế này:

int rand_r(unsigned int *seed) 
{ 
    *seed = *seed * 1103515245 + 12345; 
    return (*seed % ((unsigned int)RAND_MAX + 1)); 
} 

(mẫu lấy từ glibc)

+0

Tôi hiểu. Nó giống như một tham số đi vào bộ tạo số ngẫu nhiên psuedo, trả về một số hoặc một chuỗi hoặc số được tạo bởi thuật toán. –

+0

chính xác. hơn nữa, bạn có thể tính toán số ngẫu nhiên "ngẫu nhiên". thông tin tốt đẹp và ngắn có thể được tìm thấy ở đây [link] (http://www.mathstat.dal.ca/~selinger/random). cũng chắc chắn chỉ gọi hàm hạt giống một lần hoặc bạn có thể có cùng một chuỗi các số ngẫu nhiên (ít nhất là trong C). – kometonja

4

Nó chỉ là một số được sử dụng để đặt hạt giống cho trình tạo số ngẫu nhiên. Nó không liên quan gì đến dữ liệu của bạn. Nếu bạn không cung cấp một hạt giống một cách rõ ràng, một hạt giống mới sẽ được tạo từ thời điểm hiện tại.

Xem trang trợ giúp ?set.seed để biết thêm chi tiết về nó.

15

Trong những ngày cũ, có cuốn sách có chứa pages and pages of random digits (theo thứ tự ngẫu nhiên, tất nhiên).

Tôi thích nghĩ về set.seed(x) khi yêu cầu máy tính bắt đầu đọc các số ngẫu nhiên từ trang x trong một số lượng lớn các số ngẫu nhiên. x không có gì liên quan đến dữ liệu, nhưng làm thế nào để thuật toán lựa chọn các số ngẫu nhiên nên bắt đầu.

Điều này có thể hơi khó khăn, nhưng tôi thích sự tương tự.

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