Để có câu trả lời cho 2, trước tiên hãy xem trang trợ giúp ?RNGkind
.
Để tìm loại RNG được sử dụng:
RNGkind()
# [1] "Mersenne-Twister" "Inversion"
Các Mersenne Twister là mặc định.
Từ trang trợ giúp:
‘Mersenne-Twister":’Từ Matsumoto và Nishimura (1998).A GFSR bị xoắn với khoảng thời gian 2^19937 - 1 và equidistribution trong 623 thứ nguyên liên tiếp (trong toàn bộ thời gian). ‘hạt giống’ là một tập hợp các số nguyên 32 bit có kích thước 624 cộng với một vị trí hiện tại là trong tập hợp đó.
Để tìm hạt giống hiện tại đang sử dụng, trước tiên bạn cần gọi đến trình tạo số ngẫu nhiên.
runif(1, 0, 1)
# [1] 0.9834062
.Random.seed
# [Gives a 626 length vector]
Calling set.seed(some_integer)
tiếp theo .Random.seed
, sẽ luôn luôn cung cấp cho cùng một vector 626 chiều dài nếu bạn sử dụng cùng một some_integer
. Nói cách khác, vector dài 626 được xác định chỉ bởi some_integer
, tất nhiên là một cái đang sử dụng Misterenne Twister, tất nhiên.
Ngoài ra, tất nhiên, chạy set.seed
với một số giá trị cố định sẽ cung cấp cho bạn các giá trị giống nhau cho các cuộc gọi đến các quy trình số ngẫu nhiên sau nó. Đó là cách sử dụng chính cho nó trong thực tế, để cho khả năng tái sản xuất. Ví dụ.
set.seed(1)
runif(5, 0, 1)
# [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
rnorm(1, 0, 1)
# [1] 1.272429
set.seed(1)
runif(5, 0, 1)
# [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
rnorm(1, 0, 1)
# [1] 1.272429
Tất cả mã trình tạo số cơ bản trong R nằm trong tệp src/main/RNG.c trong mã nguồn.
Đó là trong C, nhưng khá dễ làm theo.
1. Tôi không nghĩ điều đó là cần thiết; 2. '? .Random.seed' (nó phức tạp hơn một chút, nhưng có lẽ ai đó sẽ trả lời) –
Đọc'? RNG' để nhận được hầu hết các câu trả lời của bạn – Andrie