From the ExponentialDistribution API:
http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/ExponentialDistribution.html#sample()
public double sample()
Generate a random value sampled from this
distribution. The default implementation uses the inversion method.
Algorithm Description: this implementation uses the Inversion Method
to generate exponentially distributed random values from uniform
deviates.
So when you see (int)exp.sample()
, we are converting it to this random value it selected.
exp is the instance of ExponentialDistribution(4.0)
we've created, so exp.sample() calls ExponentialDistribution
's sample()
method.
Now for the (int)
.
Placing an Object type or primitive type in parenthesis (int this case (int)
) prior to another Object/primitive is called "casting". Casting variables in Java
Pretty much, since sample()
returns a double
, but timestamp
stores ints
, we need to switch one of their types (they must match), and it's waaaaay easier to change exp.sample()
's.
So, all in all, this says "Take the object exp
, call it's method sample()
, and then convert that into an int
".