Gillespie algorithm