The key requirement of this simulator was that the probability distribution of the simulated events followed an exponential profile, with some accounts generating 10000 times more events per hour than most. Another requirement was being able to generate up to 20000 inserts and selects per second, with the inserts in size-adjustable batches.
I used the Groovy language to generate the SQL code for the simulator.