java - 如何让打乱后的数字不等于原来的数字? ( java )

标签 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 永远等于 loadG1。如果将其重新排列成完全相同的顺序,则可能会发生这种情况。我尝试使用 while 循环来解决这个问题,但每当生成相同的 randomLoadG1 时,它只会使我的应用程序崩溃。

任何人都可以帮忙解释如何让 randomLoadG1 (原始 loadG1 的改组版本)永远不会与 loadG1 具有相同的值吗?非常感谢任何提交的代码,非常感谢。

最佳答案

这是一个伪代码实现:

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

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

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

关于java - 如何让打乱后的数字不等于原来的数字? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42659457/

相关文章:

c#随机索引到数组的最快方法

Java swing Jtable 未使用 AbstractTableModel 通过 fireXXX 进行更新

java - 如何引用 Java 包中的文件

java - 具有 'inherited' 访问器的枚举

java - 如何升级Java编译器?

java - Android 上连续按 2 个按键?

ruby - 如何获得随机的 0 和 1 数字

android - Firebase 分析、自定义事件值

android - 如何在android中的水平条形图中显示可用和不可用的插槽

excel - Excel VBA 的 Rnd() 真的有这么糟糕吗?