RNGstreams
位於 parallel
包(package)。 說明
這是個R重新實現 Pierre L'Ecuyer's ‘RngStreams’ 多個偽隨機數流。
用法
nextRNGStream(seed)
nextRNGSubStream(seed)
clusterSetRNGStream(cl = NULL, iseed)
mc.reset.stream()
參數
seed |
長度為 7 的整數向量,如下所示 |
cl |
此包或包 |
iseed |
要提供給 |
細節
“RngStream”接口(可能)使用多個偽隨機數流:這特別適合並行計算,因為每個任務都可以分配一個單獨的 RNG 流。
它使用 L'Ecuyer (1999) 的 RNGkind("L'Ecuyer-CMRG")
作為其底層生成器,它具有 6 個(有符號)整數的種子向量和大約 的周期。每個‘stream’是長度為 的周期的子序列,該周期又被劃分為長度為 的‘substreams’。
L'Ecuyer 的理念等人(2002)是為每個並行計算使用單獨的流(這確保生成的隨機數永遠不會同步),並且如果需要,並行計算本身可以使用子流。原始接口存儲第一個流的原始種子、當前流的原始種子和當前種子:這可以實現為R,但通過保存相關值也很容易工作.Random.seed
: 看例子。
clusterSetRNGStream
選擇 "L'Ecuyer-CMRG"
RNG,然後將流分發給集群的成員,可以選擇通過 set.seed(iseed)
設置流的種子(否則它們是從主進程的當前種子設置的:選擇 L' 之後)埃庫耶生成器)。
當不在 Windows 上時,在設置 L'Ecuyer 隨機數生成器和種子後調用 mc.reset.stream()
使得 mcparallel(mc.set.seed = TRUE)
的運行可重現。這是在 mclapply
和 pvec
內部完成的。 (請注意,它不會在主進程中設置種子,因此不會影響這些函數的 fallback-to-serial 版本。)
值
對於 nextRNGStream
和 nextRNGSubStream
,可以分配給 .Random.seed
的值。
注意
CRAN 包 rlecuyer
和 rstream
中提供了 L'Ecuyer's C 代碼的接口。
例子
RNGkind("L'Ecuyer-CMRG")
set.seed(123)
(s <- .Random.seed)
## do some work involving random numbers.
nextRNGStream(s)
nextRNGSubStream(s)
作者
Brian Ripley
參考
L'Ecuyer, P. (1999). Good parameters and implementations for combined multiple recursive random number generators. Operations Research, 47, 159-164. doi:10.1287/opre.47.1.159.
L'Ecuyer, P., Simard, R., Chen, E. J. and Kelton, W. D. (2002). An object-oriented random-number package with many long streams and substreams. Operations Research, 50, 1073-1075. doi:10.1287/opre.50.6.1073.358.
也可以看看
RNG
的更詳細信息R的內置隨機數生成器。
包 parallel
的小插圖。
相關用法
- R pvec 使用 Forking 並行化向量映射函數
- R children 用於管理分叉進程的低級函數
- R makeCluster 創建並行套接字集群
- R clusterApply 使用集群應用操作
- R detectCores 檢測CPU核心數
- R mcparallel 在單獨的進程中異步計算 R 表達式
- R mcfork 分叉當前 R 進程的副本
- R mcaffinity 獲取或設置當前進程的CPU親和性掩碼
- R mclapply 使用 Forking 的 lapply 和 mapply 並行版本
- R splitIndices 劃分任務在集群中分布
- R SparkR partitionBy用法及代碼示例
- R purrr accumulate 累積向量縮減的中間結果
- R purrr imap 將函數應用於向量的每個元素及其索引
- R purrr list_transpose 轉置列表
- R purrr as_vector 將列表強製轉換為向量
- R purrr map_if 有條件地將函數應用於向量的每個元素
- R purrr map2 映射兩個輸入
- R purrr map_depth 在給定深度映射/修改元素
- R SparkR printSchema用法及代碼示例
- R purrr list_simplify 將列表簡化為原子或 S3 向量
- R purrr rerun 多次重新運行表達式
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Implementation of Pierre L'Ecuyer's RngStreams。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。