# [R] van der Corput sequences

From: Carlos Ungil <carlos.ungil_at_gmail.com>
Date: Fri, 23 May 2008 23:30:27 +0200

Alberto,

I think the functions below do what you want:

> vanDerCorput(12,6)

[1] 0.16666667 0.33333333 0.50000000 0.66666667 0.83333333 0.02777778  [7] 0.19444444 0.36111111 0.52777778 0.69444444 0.86111111 0.05555556

Regards,

Carlos

number2digits=function(n,base){
#first digit in output is the least significant   digit=n%%base
if (n<base)
digit
else
c(digit,number2digits((n-digit)/base,base)) }

digits2number=function(digits,base){
#first digit in input should be the most significant   result=0
for (digit in digits)
result=(base*result)+digit
result
}

vanDerCorput=function(n,base=2){
#generate n first digits of the van der Corput sequence   output=NA*1:n
for(i in 1:n){
digits=number2digits(i,base)
output[i]=digits2number(digits,base)/base^length(digits)   }
output
}

In package fOptions, there are functions that generate Halton sequences.

The van der Corput sequence for base 2 is a particular case of the Halton sequence generated by:

n <- 8 # anything here...
x <- runif.halton(n, 1)

In fact, x <- runif.halton(n, dim) will generate the van der Corput sequences for the base b as the i-th prime number in x[,i].

(in other words, if I want the van der Corput sequence for base b = 5, I do x <- runif.halton(n, 3) and take x[,3]).

However, it's possible to have van der Corput sequences for non-prime basis, like (for b = 10):

0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.01, 0.11, 0.21, 0.31, 0.41, 0.51, 0.61, 0.71, 0.81, 0.91, 0.02, 0.12, 0.22, 0.32,

Is there any R function that generates those sequences?

Alberto Monteiro

R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Fri 23 May 2008 - 21:48:37 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 23 May 2008 - 22:30:43 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.