[R] [OOPS] Re: Drawing sample from a circle

R Heberto Ghezzo, Dr heberto.ghezzo at mcgill.ca
Mon Jun 21 14:45:42 CEST 2010


Sorry Ted
The code for the circle is in error, the radius distribution should be proportional to the circle area not
uniform. Better / simple to sample from the (-1,1) square uniformly and reject where x^2+y^2 > 1
Heberto
________________________________________
From: r-help-bounces at r-project.org [r-help-bounces at r-project.org] On Behalf Of Ted Harding [Ted.Harding at manchester.ac.uk]
Sent: Friday, June 18, 2010 5:48 AM
To: r-help at stat.math.ethz.ch
Subject: [R] [OOPS] Re:  Drawing sample from a circle

OOPS: AN error on the code below! See in-line.
Ted.

On 18-Jun-10 09:33:04, Ted Harding wrote:
> On 18-Jun-10 08:04:36, Ron Michael wrote:
>> Hi, I would like to draw 10 uniformly distributed sample points from a
>> circle with redius one and centered at (0,0). Is there any R function
>> to do that?
>> _
>> Thanks,
>
> You can quite easily write one.
>
> [A]
> Sampling uniformly on the circumference of the circle:
>
>   csamp <- function(n,rad=1,centre=c(0,0)){
>     x0 <- centre[1] ; y0 <- centre[2]
>     u <- 2*pi*runif(n)
>     rad*cbind(x=cos(u)+x0, y=sin(u)+y0)
>   }
>
># Returns an nx2 matrix whose two columns are the x and y coordinates
CORRECTION:

  csamp <- function(n,rad=1,centre=c(0,0)){
    x0 <- centre[1] ; y0 <- centre[2]
    u <- 2*pi*runif(n)
    cbind(x=rad*cos(u)+x0, y=rad*sin(u)+y0)
  }

# Returns an nx2 matrix whose two columns are the x and y coordinates

> [B]
> Sampling uniformaly within the circle
>
>   Csamp <- function(n,rad=1,centre=c(0,0)){
>     x0 <- centre[1] ; y0 <- centre[2]
>     u <- 2*pi*runif(n)
>     r <- sqrt(runif(n))
>     rad*cbind(x=r*cos(u)+x0, y=r*sin(u)+y0)
> }
>
># Returns an nx2 matrix whose two columns are the x and y coordinates
CORRECTION:

  Csamp <- function(n,rad=1,centre=c(0,0)){
    x0 <- centre[1] ; y0 <- centre[2]
    u <- 2*pi*runif(n)
    r <- sqrt(runif(n))
    cbind(x=rad*r*cos(u)+x0, y=rad*r*sin(u)+y0)
}

# Returns an nx2 matrix whose two columns are the x and y coordinates


> [C]
> Examples:
>
>   plot(csamp(100),asp=1)
>
>   plot(Csamp(1000),asp=1)
>
> Ted.
>
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 18-Jun-10                                       Time: 10:33:00
> ------------------------------ XFMail ------------------------------
>
> ______________________________________________
> 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.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 18-Jun-10                                       Time: 10:48:14
------------------------------ XFMail ------------------------------

______________________________________________
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.


More information about the R-help mailing list