我有一个原始号码(LoadG1)。然后我生成这个数字的洗牌版本,如下面的代码所示。注意:generateG1是Random
。
int loadG1 = generateG1.nextInt(89999) + 10000;
for (int allrbA = 0; allrbA < 4; allrbA++) {
StringBuilder charLoadG1 = new StringBuilder(String.valueOf(loadG1));
StringBuilder randomLoadG1 = new StringBuilder();
while(charLoadG1.length() != 0) {
int index = generateG1.nextInt(charLoadG1.length());
char c = charLoadG1.charAt(index);
randomLoadG1.append(c);
charLoadG1.deleteCharAt(index);
}
}
if(Integer.valueof(String.valueof(randomLoadG1))==loadG1) {
for (int allrbA = 0; allrbA < 4; allrbA++) {
StringBuilder charLoadG1 = new StringBuilder(String.valueOf(loadG1));
StringBuilder randomLoadG1 = new StringBuilder();
while(charLoadG1.length() != 0) {
int index = generateG1.nextInt(charLoadG1.length());
char c = charLoadG1.charAt(index);
randomLoadG1.append(c);
charLoadG1.deleteCharAt(index);
}
}
这成功重新排列了loadG1中的数字,被视为randomLoadG1的值。问题是,我不希望randomLoadG1永远== to loadG1。如果将其重新排列为完全相同的顺序,则会发生这种情况。我尝试使用while循环对其进行排序,但只有在生成相同的randomLoadG1时,它才会崩溃我的应用程序。
任何人都可以帮忙解释如何让randomLoadG1(原始loadG1的混乱版本)永远不会与loadG1具有相同的值吗?非常感谢任何提交的代码,非常感谢。
答案 0 :(得分:1)
这是伪代码实现:
number1 = random number
do {
number2 = random_shuffle(number1);
} while (number1 == number2)
...其中random_shuffle(number1)
代表您现有的随机播放算法。
现在我不明白为什么你不能重构现有的实现来遵循这种模式,但它应该是简单的Java编程。如果您的代码崩溃,那么您应该使用调试器来找出原因。