[SciPy-User] random points within an ellipse

David Goldsmith d.l.goldsmith at gmail.com
Thu Aug 5 02:50:46 EDT 2010


For the ellipse:

import numpy as np
from numpy.random import random_sample as random

pi = np.pi
def rand_in_ellipse(a, b=1, offset=0):
    angle = 2*pi*random() - offset
    x = a * random() * np.cos(angle)
    y = b * random() * np.sin(angle)
    return np.array((x,y))

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

sample = np.array([rand_in_ellipse() for i in np.arange(10000)])
ax.scatter(sample[:,0], sample[:,1])
plt.show() # Figure attached

DG


On Wed, Aug 4, 2010 at 8:13 PM, Benjamin Root <ben.root at ou.edu> wrote:

> On Wed, Aug 4, 2010 at 7:18 PM, alex <argriffi at ncsu.edu> wrote:
>
>> On Wed, Aug 4, 2010 at 7:38 PM, Benjamin Root <ben.root at ou.edu> wrote:
>>
>>> Hi,
>>>
>>> For a project, I need to create sets of random coordinates within a 2d
>>> domain.  To start, I have been creating random x and y coordinates, which
>>> has worked very nicely.  However, I would like to start doing some fancier
>>> domains like ellipses and crescents.  Does anybody know of any useful tricks
>>> for doing this?
>>>
>>> Thanks,
>>> Ben Root
>>>
>>
>> For an ellipse you could start with random points in a disk like this
>> http://mathworld.wolfram.com/DiskPointPicking.html
>> and then I think you can just stretch along an axis to give the points
>> inside the ellipse disk.
>> For fancier shapes you can do rejection sampling as long as you can get a
>> bounding box and
>> you can tell what is inside vs outside the domain.
>>
>> Alex
>>
>>
> Thanks Alex, that certainly does put me in the correct direction. It
> appears that there isn't an analogous expression for an ellipse as there was
> for a disc.  I probably will have to just take your suggestion and do some
> scaling/rotation upon the set of points to get what I want.  It should be
> more than sufficient, and it does look better than my original attempts.
>
> Ben Root
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
>


-- 
Mathematician: noun, someone who disavows certainty when their uncertainty
set is non-empty, even if that set has measure zero.

Hope: noun, that delusive spirit which escaped Pandora's jar and, with her
lies, prevents mankind from committing a general suicide.  (As interpreted
by Robert Graves)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20100804/45ba9667/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 4thirds_ellipse.png
Type: image/png
Size: 213518 bytes
Desc: not available
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20100804/45ba9667/attachment.png>


More information about the SciPy-User mailing list