This function generates `n`

independent random points,
uniformly distributed in the window `win`

.
(For nonuniform distributions, see `rpoint`

.)

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.