Optional. A point pattern to use as the example.
If ex is given and n and win are missing,
then n and win will be calculated from
the point pattern ex.

Details

The algorithm depends on the type of window, as follows:

If win is a rectangle then
n independent random points, uniformly distributed
in the rectangle, are generated by assigning uniform random values to their
cartesian coordinates.

If win is a binary image mask, then a random sequence of
pixels is selected (using sample)
with equal probabilities. Then for each pixel in the sequence
we generate a uniformly distributed random point in that pixel.

If win is a polygonal window, the algorithm uses the rejection
method. It finds a rectangle enclosing the window,
generates points in this rectangle, and tests whether they fall in
the desired window. It gives up when giveup * n tests
have been performed without yielding n successes.

The algorithm for binary image masks is faster than the rejection
method but involves discretisation.

If warn=TRUE, then a warning will be issued if n is very large.
The threshold is spatstat.options("huge.npoints").
This warning has no consequences,
but it helps to trap a number of common errors.

Value

A point pattern (an object of class "ppp")
if nsim=1, or a list of point patterns if nsim > 1.