首先,我根本不是R的专家。 我正在寻找一种在R中实现Xorshift32算法的解决方案,如果可能的话,使用RNGKind。
我的最终目标是使用该库对Xorshift32算法执行随机性测试 https://rdrr.io/cran/CryptRndTest/man/adaptive.chi.square.html
在此先感谢您的帮助!
答案 0 :(得分:2)
这是Wikipedia page中关于xorshift算法的第一个C实现的R版本:
xorshift32 <- function(x)
{
x <- as.integer(x)
x <- bitwXor(bitwShiftL(x, 13), x)
x <- bitwXor(bitwShiftR(x, 17), x)
bitwXor(bitwShiftL(x, 5), x)
}
xorshift32(1)
#> [1] 270369
不过,最好是直接使用Rcpp::cppFunction
创建的R中的函数直接调用已编译的C代码:
Rcpp::cppFunction("uint32_t xorshift32(uint32_t x){x^=x<<13;x^=x>>17;x^=x<<5;return x;}")
xorshift32(1)
#> [1] 270369