Thực chất đây không chỉ là câu hỏi R; nó liên quan đến việc tạo số ngẫu nhiên nói chung hơn.
Số "ngẫu nhiên" rất quan trọng trong nhiều phần của thống kê. Chúng ta cần các giá trị ngẫu nhiên mà chúng ta tạo ra để có các thuộc tính nhất định và (thường) rất nhiều nỗ lực để xây dựng các trình tạo số ngẫu nhiên và kiểm tra các thuộc tính của chúng.
Ý tưởng là chúng tôi muốn có được một chuỗi các giá trị là một proxy tốt cho các số thực sự ngẫu nhiên. Cách làm việc thông thường của việc tạo số ngẫu nhiên là phân phối đồng đều (từ đó chúng ta xây dựng các số khác, như các số ngẫu nhiên Gaussian).
[0,1)
Ví dụ, nhiều người chỉ làm việc trên cái trước:
x1=f(x0)z1=x1/mx2=f(x1)z2=x2/mx3=f(x2)z3=x3/m⋮
xzf
x0
x3
Xem ?runif
trong R và bạn sẽ lưu ý rằng nó giải thích về sự tồn tại của hạt giống ngẫu nhiên, với một liên kết đến trợ giúp ?.Random.seed
giải thích số lượng lớn các trình tạo số ngẫu nhiên có sẵn trong R (thậm chí bạn có thể tự cung cấp). Trang trợ giúp tương tự giải thích rằng nếu bạn chưa sử dụng tạo số ngẫu nhiên trước hoặc đặt hạt giống, để bắt đầu với hạt giống được lấy từ đồng hồ và sau đó giá trị trước đó được lưu trữ (để số ngẫu nhiên tiếp theo bạn nhận được sẽ là cùng một thứ bạn đã nhận được nếu bạn tạo thêm một giá trị lần trước - nó ghi nhớ "nơi bạn đang đến").
Hàm runif
trong R (giống như một vài thói quen tạo số ngẫu nhiên khác trong các gói khác thường có thể làm điều gì đó tương tự) biết về nơi lưu giữ hạt giống số ngẫu nhiên. Nó tiếp tục cập nhật giá trị đó khi nó đi. Vì vậy, nó có thể hoạt động mà không cần phải thông qua một hạt giống, nhưng nó vẫn sử dụng một hạt giống; nếu bạn không cho nó một cái, nó chỉ sử dụng cái mà nó đã lưu cuối cùng.
Về lý do tại sao nó cung cấp các đầu ra khác nhau mỗi lần (nếu bạn không bảo nó đưa ra cùng một chuỗi): nó thực hiện điều này bởi vì các giá trị giống nhau mỗi lần thường sẽ rất phản tác dụng - nó sẽ không có các thuộc tính lặp đi lặp lại lấy mẫu ngẫu nhiên sẽ có, làm cho nó không hữu ích cho các giả định mà chúng tôi sử dụng các trình tạo số ngẫu nhiên cho.