我正在尝试在 R 中生成一些二维 Halton 序列,并使用 randtoolsbox
包。似乎这个函数默认选择 2 和 3 作为素数碱基,但我想使用其他函数生成序列。该文档没有指出(据我所知)设置此选项的任何方法。
有谁知道一种方法,使用randtoolsbox
或其他包,根据用户选择的素数碱基在R中生成Halton序列?
最佳答案
所以,我最终只是为此编写了自己的函数。对于超大的 n
来说,它可能不会很快,但无论如何,它允许您选择自己的主要碱基:
gHalton <- function(n, prime) {
# define function which generates value of halton
# sequence at given n
halton_single_number <- function(n, prime) {
n_0 <- n
hn <- 0
f <- 1/prime
while(n_0 > 0) {
n_1 <- floor(n_0/prime)
r <- n_0 - n_1*prime
hn <- hn + f*r
f = f/prime
n_0 = n_1
}
return(hn)
}
# create 0 vector of desired length
vector <- rep(0, n)
# fill vector
for(i in 1:n) {
vector[i] <- halton_single_number(i, prime)
}
return(vector)
}
当然欢迎其他答案或更有效的功能。无论如何,也许这对将来的某人有用。
关于r - 在 R 中选择用于 Halton 数列的素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39679870/