[R] quasi-random sequences

baptiste Auguié ba208 at exeter.ac.uk
Sat Apr 26 12:22:44 CEST 2008


Dear list useRs,

I have to generate a random set of coordinates (x,y) in [-1 ; 1]^2  
for say, N points. At each of these points is drawn a circle (later  
on, an ellipse) of random size, as in:


> N <- 100
>
> positions <- matrix(rnorm(2 * N, mean = 0 , sd= 0.5), nrow=N)
> sizes<-rnorm(N, mean = 0 , sd= 1)
> plot(positions,type="p",cex=sizes)


My problem is to avoid collisions (overlap, really) between the  
points. I would like some random pattern, but with a minimum  
exclusion distance. In looking up "Numerical recipes in C", I found  
out about some Sobol quasi-random sequences, which one can call from  
the gsl package,


> library(gsl)
>
> g <- qrng_alloc(type="sobol",dim=2)
> qrng_get(g,n= N) ->xy
>
> plot((xy),t="p",cex=0.5)

but this does not look very random: I clearly see some pattern  
(diagonals, etc...), and even the non-overlapping condition is not  
impressive.

One (painful) way I can foresee is to check the distance between each  
symbol and the others, and move the overlapping ones in a recursive  
manner. Before delving into this, I wanted to check I'm not  
overlooking something in the rgl quasi-random sequences, or missing a  
more obvious way to generate such patterns. Perhaps solving an  
electrostatic problem with a potential both attractive at long  
distances and repulsive at short distances is a better way? I have a  
vague recollection of hearing that somewhere to position points  
evenly on a sphere.


Thanks for any comment / suggestion,

Baptiste


_____________________________

Baptiste Auguié

Physics Department
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag
http://projects.ex.ac.uk/atto



More information about the R-help mailing list