I found lots of misfitting advice searching Google for how to generate random strings in Java. The misfits assumed I was generating unique keys, often for web page cookies.
What I searched for was random Java strings along the lines of new Random().nextInt()
, to use for probabilistic testing, but I failed to find this so I rolled my own.
Not a thing of beauty, but accomplished by goal. Hopefully someone might find this useful:
String randomString(final Random random, final int minLength, final int maxLength) { final int length = random.nextInt(maxLength - minLength) + minLength; final char[] chars = new char[length]; for (int i = 0, x = chars.length; i < x; ) do { final int cp = random.nextInt(0x10FFFF + 1); if (!Character.isDefined(cp)) continue; final char[] chs = Character.toChars(cp); if (chs.length > x - i) continue; for (final char ch : chs) chars[i++] = ch; break; } while (true); return new String(chars); }
To examine what you get back, consider Character.UnicodeBlock.of(int codePoint)
.
No comments:
Post a Comment