Take the 2-minute tour ×
MathOverflow is a question and answer site for professional mathematicians. It's 100% free, no registration required.

A determinantal process on the line is a random collection of points on $\mathbb{R}$ such that the probability of $x_1, \dots, x_n$ lying on the random set is $\det (K(x_i, x_j))_{(i,j)}$. Examples of determinantal processes include the eigenvalues of random Hermitean matrices with Gaussian entries and non-intersecting random walks. I'm interested in sampling random points on the line according to the sine kernel $k(x,y) = \frac{\sin(x-y)}{\pi(x-y)}$ or the Airy Kernel (see p 6 of the slides) which are related to the Gaussian Unitary Ensemble.

I thought there are algorithms for sampling from general discrete and continuous determinantal processes. Maybe it's be better to sample a processes directly using Coupling from the Past and other procedures.


  • how does one sample points on the real line with respect to the sine kernel?
  • is there a general way of sampling determinantal processes based or arbitrary kernel?

It is known these types of processes demonstrate repulsion (compared to the Poisson process) and I would like to demonstrate this in the classroom.

share|improve this question

2 Answers 2

up vote 2 down vote accepted

Just in case someone is still interested. The algorithm of Hough, Krishnapur, Peres and Virag was implemented here


in the case of eigenvalues of random matrices. The methodology uses Chebyshev approximations to do inverse sampling of the marginal distributions. The code is available here in the Julia RMT package:


share|improve this answer

For a general algorithm for simulating points from a determinantal process, see Algorithm 18 in the paper "Determinantal Processes and Independence" by Hough, Krishnapur, Peres and Virag:

arXiv link

This algorithm was actually implemented by some physicists at Princeton (I believe) but I am not sure if their code is publicly available.

For the sine kernel, depending on how many points you want to sample, Matlab is pretty good at computing eigenvalues of a large GUE matrix in a decently short amount of time. That would require much less work than implementing the algorithm above.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.