docs说:“所有排列发生的可能性都差不多。”但是我不知道这是否包括返回相同顺序的可能性(但是很小)。我有一种方法(请参阅下文),其中在两次测试运行期间,列表可能会按原始顺序返回。.其他因素可能有误,例如可能选择了七字谜并且结果是一个单词。词典约为30万个单词,因此我将方法更改为更合适的测试,以防止出现这种情况。
方法:

private static char[] nextScrambledWord(int wordLength) {

    String word;
    do {
        word = "ABCDEF"; //TODO Get a word from lexicon
    } while(word.length() != wordLength);

    ArrayList<Character> temp = new ArrayList<Character>(wordLength);
    for(int i = 0; i < wordLength; i++) {
        temp.add(word.charAt(i));
    }

    Collections.shuffle(temp);

    char[] result = new char[wordLength];
    for(int i = 0; i < wordLength; i++) {
        result[i] = temp.get(i);
    }
    return result;
}

我也对方法本身感到好奇。如果有人对如何改善此问题有任何建议,请随时分享。基本上,该方法将从集合中提取wordLength的单词,并返回经过改组的结果的char数组。我没有考虑轮询一个已知长度的单词,而是考虑根据单词的长度将词典分成多个集合。

最佳答案

是的,可能保留了原始顺序,但是,正如您所说,较长的列表不太可能保留。尝试仅包含两个元素的列表,以查看是否发生这种情况。

10-06 00:05