MATLAB: Nearest neighbour distances between random points

distancenearest neighbourrandom points

I am trying to model an experiment where molecules are randomly distributed on a 2D surface. What I want to know is:
  1. How are the nearest neighbour distances between the molecules distributed?
  2. How does the distribution vary with the areal density of molecules?
In other words, for a range of densities (molecules/μm²) how do I calculate the mean/median distance between each molecule and its nearest neighbour? I thought this should be a trivial problem, but from what I have found so far it looks to be more involved than I thought. I'm an experienced MATLAB user but not a mathematician…

Best Answer

This sounds like a job for Monte Carlo methods.
repeat over the range of densities
repeat a number of times
use the current density to generate a random set of particle locations
find the nearest neighbour distances
measure the mean and median NN distances, probably the standard deviation, and record
end loop
create some kind of ensemble representation for the current density
end loop
You will need to pay attention to whether the locations are uniformly distributed or normally distributed or power law or whatever.
Doing a theoretical modeling is probably possible, but I do not know how to do it.