R軟體如何儲存隨機種子?
R是一個很好的模擬工具,有許多內建函數可資運用。使用者有時希望獲得相同的模擬
結果,則可將隨機種子(random seed)儲存起來重複利用。例如:
> set.seed(12)
> seed <- .Random.seed
> x <- runif(10)
> .Random.seed <- seed
> y <- runif(10)
> x - y
[1] 0 0 0 0 0 0 0 0 0 0
讀者會發現兩次模擬的十筆均勻分配資料是一樣的。
如果要在兩次 R sessions中獲得相同的模擬結果,首先請輸入:
> # session 1
> set.seed(10)
> seed <- .Random.seed
> x <- runif(10)
將第一個 session 的結果儲存起來後離開 R:
> write.table(x, "x")
> write.table(seed, "seed")
> q()
重新開啓 R,在第二個session 輸入:
> # session 2
> x <- read.table("x")
> seed <- read.table("seed")
> .Random.seed <- t(seed)
> y <- runif(10)
> x - y
x
1 3.330669e-16
2 3.330669e-16
3 -2.220446e-16
4 -4.440892e-16
5 2.775558e-17
6 -1.110223e-16
7 2.220446e-16
8 -1.665335e-16
9 -3.330669e-16
10 1.110223e-16
讀者會發現兩次 sessions 模擬的結果幾乎沒有差異!
參考資料:http://lists.cs.wisc.edu/archive/stat-forum/2007-March/msg00004.shtm/
撰文者: |