[R] Random Rectangles

Jim Lemon jim at bitwrit.com.au
Thu Jan 10 03:48:53 CET 2013


On 01/10/2013 07:37 AM, David Arnold wrote:
> Hi,
>
> Just curious. Has anyone out there ever written a script to generate 100
> random rectangles such as the ones shown on this page?
>
> http://www2.math.umd.edu/~jlh/214/Random%20Rectangles.pdf
>

Hi David,
There are a number of ways to generate "random" rectangles, for instance:

# each row specifies the number of rows and columns of squares
rr.df<-data.frame(nrow=sample(1:12,100,TRUE,prob=12:1),
  ncol=sample(1:12,100,TRUE,prob=12:1))

Then just plot the resulting rectangles:

sqrect<-function(x0,y0,x1,y1) {
  nx<-x1-x0-1
  ny<-y1-y0-1
  for(x in 0:nx) {
   for(y in 0:ny)
    rect(x0+x,y0+y,x0+x+1,y0+y+1)
  }
}

rrPlot<-function(rrdf,div=1.3) {
  nrect<-dim(rrdf)[1]
  plotspace<-nrect/div
  plot(c(1,plotspace),c(1,plotspace),type="n",
   axes=FALSE,xlab="",ylab="",main="Random Rectangles")
  xpos<-ypos<-maxypos<-1
  for(rectangle in 1:nrect) {
   if(xpos+rrdf[rectangle,1] > plotspace) {
    xpos<-1
    ypos<-maxypos
    maxypos<-1
   }
   sqrect(xpos,ypos,xpos+rrdf[rectangle,1],
    ypos+rrdf[rectangle,2])
   xpos<-xpos+rrdf[rectangle,1]+1
   if(ypos+rrdf[rectangle,2] > maxypos)
    maxypos<-ypos+rrdf[rectangle,2]+2
  }
}

The example above does not do any sophisticated placing of the 
rectangles, but more importantly, shows that there are probably unstated 
constraints on the "randomness" of the rectangles.

Jim




More information about the R-help mailing list