Вот R-версия первой реализации C, показанная на странице Википедии об алгоритме xorshift:
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
Однако было бы лучше просто скомпилировать C код, вызываемый напрямую через функцию в R, созданный с помощью Rcpp::cppFunction
:
Rcpp::cppFunction("uint32_t xorshift32(uint32_t x){x^=x<<13;x^=x>>17;x^=x<<5;return x;}")
xorshift32(1)
#> [1] 270369