code: @Override
  	public Endpoint next(Endpoint[] array) {
  
  		// Generate pseudo random long (XORShift is the fastest random method)
  		long start;
  		long next;
  		do {
  			start = rnd.get();
  			next = start + 1;
  			next ^= (next << 21);
  			next ^= (next >>> 35);
  			next ^= (next << 4);
  		} while (!rnd.compareAndSet(start, next));
  
  		// Return ActionEndpoint
  		return array[(int) Math.abs(next % array.length)];
  	}
docs: --- GET NEXT ENDPOINT ---