如何使洗牌号码永远不等于原件? (Java)的

时间:2017-03-07 22:21:03

标签: java android random int

我有一个原始号码(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具有相同的值吗?非常感谢任何提交的代码,非常感谢。

1 个答案:

答案 0 :(得分:1)

这是伪代码实现:

number1 = random number
do {
    number2 = random_shuffle(number1);
} while (number1 == number2)

...其中random_shuffle(number1)代表您现有的随机播放算法。

现在我不明白为什么你不能重构现有的实现来遵循这种模式,但它应该是简单的Java编程。如果您的代码崩溃,那么您应该使用调试器来找出原因。