sinterface IProbabilisticScheduler { // schedule an action at an absolute probability void at(double probability, Runnable action); // schedule an action at a probability relative to // currentProbability() default void atRelative(double probability, Runnable action) { at(currentProbability()*probability, action); } double currentProbability(); long stepCount(); }