Random.user
位於 base
包(package)。 說明
函數RNGkind
允許提供user-coded 均勻和正態隨機數生成器。詳細信息請參見此處。
細節
從 dynamically-loaded 編譯代碼中的入口點調用用戶指定的統一 RNG。用戶必須提供入口點 user_unif_rand
,該入口點不帶參數並返回指向雙精度型的指針。下麵的示例將顯示一般模式。生成器應至少具有 25 位精度。
或者,用戶可以提供入口點 user_unif_init
,在調用 RNGkind
(或 set.seed
)時使用 unsigned int
參數調用該入口點,並用於初始化用戶的 RNG 代碼。該參數旨在用於設置‘seeds’;它是 set.seed
的 seed
參數,或者如果調用 RNGkind
則本質上是隨機種子。
如果僅提供這些函數,則不會在中記錄有關生成器狀態的信息.Random.seed
。可選,函數user_unif_nseed
和user_unif_seedloc
可以提供不帶參數的調用,並且應該返回指向種子數量和整數的指針(具體來說,‘Int32’)種子數組。調用GetRNGstate
和PutRNGstate
然後將這個數組複製到或從.Random.seed
.
用戶指定的普通 RNG 由單個入口點 user_norm_rand
指定,該入口點不帶參數並返回指向雙精度的指針。
警告
與所有已編譯的代碼一樣,錯誤指定這些函數可能會崩潰R。一定要包括‘R_ext/Random.h’用於類型檢查的頭文件。
例子
## Not run:
## Marsaglia's congruential PRNG
#include <R_ext/Random.h>
static Int32 seed;
static double res;
static int nseed = 1;
double * user_unif_rand(void)
{
seed = 69069 * seed + 1;
res = seed * 2.32830643653869e-10;
return &res;
}
void user_unif_init(Int32 seed_in) { seed = seed_in; }
int * user_unif_nseed(void) { return &nseed; }
int * user_unif_seedloc(void) { return (int *) &seed; }
/* ratio-of-uniforms for normal */
#include <math.h>
static double x;
double * user_norm_rand(void)
{
double u, v, z;
do {
u = unif_rand();
v = 0.857764 * (2. * unif_rand() - 1);
x = v/u; z = 0.25 * x * x;
if (z < 1. - u) break;
if (z > 0.259/u + 0.35) continue;
} while (z > -log(u));
return &x;
}
## Use under Unix:
R CMD SHLIB urand.c
R
> dyn.load("urand.so")
> RNGkind("user")
> runif(10)
> .Random.seed
> RNGkind(, "user")
> rnorm(10)
> RNGkind()
[1] "user-supplied" "user-supplied"
## End(Not run)
相關用法
- R Random 隨機數生成
- R RdUtils 用於處理 Rd 文件的實用程序
- R Rhome 返回 R 主目錄
- R Recall 遞歸調用
- R Round 數字四舍五入
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 將文本推回連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R invisible 將打印模式更改為不可見
- R noquote “無引號”字符串打印類
- R warning 警告信息
- R rapply 遞歸地將函數應用於列表
- R basename 操作文件路徑
- R with 評估數據環境中的表達式
- R formals 訪問和操縱形式參數
- R icuSetCollate 按 ICU 設置整理
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 User-supplied Random Number Generation。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。