在Java中,应该使用随机数生成器返回一个指定长度的随机选取子字符串。如果长度为负数或大于文本长度,则该方法应抛出IllegalArgumentException异常。例如,chooseSubstring("abcde", 4, new Random()) 应该大约一半的时间返回 "abcd",另一半的时间返回 "bcde"。
public static String chooseSubstring (String text, int length, Random rand)
{
int randomNum = rand.nextInt(length);
String answer = text.substring(randomNum);
return answer;
}
基本上,我想从变量text中返回一个子字符串。这个子字符串的长度必须与变量长度相同。这个子字符串的开头应该从一个由随机数生成器确定的随机位置开始。我的问题是,随机数生成器没有确保子字符串的长度是正确的。
System.out.println(chooseSubstring("abcde", 4, new Random()));
应该让
abcd
和bcde
的出现频率大致相同,但实际上返回了以下结果:
bcde
cde
de
abcde
。
如果有任何解决此问题的信息,将非常有帮助,谢谢!
randomNum
是一个从0
到length
(不包括length
)的值。它将是 0、1、2 或 3 中的一个。 - Elliott Frisch