@@ -66,7 +66,7 @@ public static CUID randomCUID2(final int length) {
6666 }
6767
6868 final String time = Long .toString (System .currentTimeMillis (), NUMBER_BASE );
69- final char firstLetter = CUIDv2 .ALPHABET_ARRAY [safeAbs (Common .nextIntValue ()) % CUIDv2 .ALPHABET_ARRAY .length ];
69+ final char firstLetter = CUIDv2 .ALPHABET_ARRAY [safeAbs (( int ) ( Common .nextFloatValue () * CUIDv2 .ALPHABET_ARRAY .length )) ];
7070 final String hash = CUIDv2 .computeHash (
7171 time + CUIDv2 .createEntropy (length ) + CUIDv2 .nextCounterValue () + Common .MACHINE_FINGERPRINT ,
7272 length );
@@ -276,12 +276,10 @@ private static synchronized int nextCounterValue() {
276276 */
277277 private static String createEntropy (final int length ) {
278278
279- int primeNumber ;
280279 final StringBuilder stringBuilder = new StringBuilder (length );
281280
282281 while (stringBuilder .length () < length ) {
283- primeNumber = PRIME_NUMBER_ARRAY [safeAbs (Common .nextIntValue ()) % PRIME_NUMBER_ARRAY .length ];
284- stringBuilder .append (Integer .toString (primeNumber * Common .nextIntValue (), NUMBER_BASE ));
282+ stringBuilder .append (Integer .toString (Common .nextIntValue () * NUMBER_BASE , NUMBER_BASE ));
285283 }
286284
287285 return stringBuilder .toString ();
@@ -337,6 +335,17 @@ private static synchronized int nextIntValue() {
337335 | (Common .RANDOM_BUFFER [randomBufferIndex ++] & 0xff );
338336 }
339337
338+ /**
339+ * Retrieves next random floating value.
340+ *
341+ * @return A random floating number (between `0.0` and `1.0`)
342+ * @since 2.0.5
343+ */
344+ private static float nextFloatValue () {
345+
346+ return NUMBER_GENERATOR .nextFloat ();
347+ }
348+
340349 /**
341350 * Pads string with leading zero.
342351 *
0 commit comments