2016-09-24 52 views
1

我試圖在R中生成一些二維Halton序列,並使用randtoolsbox包。看起來好像這個函數默認選擇2和3作爲素數的基礎,但我想用別人生成序列。該文件沒有表明(據我所知)設置此選項的任何方式。在R中採用素數來使用Halton序列

有沒有人知道一種方法,使用randtoolsbox或其他軟件包,根據用戶選擇的基數生成R中的Halton序列?

回答

0

所以,我最終只是編程自己的功能。它可能不會是快超大型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) 
} 

其他答案,或更有效的功能當然歡迎。無論如何,這可能對將來的某個人有用。