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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。