title: Very fast uniform distribution random number generator
body: <p>As part of a Monte Carlo simulation, I have to roll a group of dice until certain values show up a certain amount of times. My code that does this calls upon a dice class which generates a random number between 1 and 6, and returns it. Originally the code looked like</p>
  
  <pre><code>public void roll() {
      value = (int)(Math.random()*6) + 1;
  }
  </code></pre>
  
  <p>and it wasn't very fast. By exchanging Math.random() for</p>
  
  <pre><code>ThreadLocalRandom.current().nextInt(1, 7);
  </code></pre>
  
  <p>It ran a section in roughly 60% of the original time, which called this around about 250 million times.
  As part of the full simulation it will call upon this method billions of times at the very least, so is there any faster way to do this?</p>