Creating a new Random object each time a random value is needed is inefficient and may produce numbers that are not random, depending
on the JDK. For better efficiency and randomness, create a single Random, store it, and reuse it.
The Random() constructor tries to set the seed with a distinct value every time. However, there is no guarantee that the seed will be
randomly or uniformly distributed. Some JDK will use the current time as seed, making the generated numbers not random.
This rule finds cases where a new Random is created each time a method is invoked.
Exceptions
This rule doesn’t apply to classes that use a Random in their constructors or the static main function and nowhere
else.