【发布时间】:2018-03-14 10:19:38
【问题描述】:
我正在尝试创建一个由数字 0 - 9 以随机顺序组成的长数组,这意味着不会有相同数字的重复。我是一个新手编码员,这就是我试图想出的。
public static void shuffle()
{
long[] rn = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
Random rand = new Random();
for (int i = 0; i < 10; i++) {
int n;
n = rand.nextInt(10) + 0;
for (int j = 0; j < 10; j++)
{
if (n != rn[j])
{
j++;
}
else if (n == rn[j])
{
n = rand.nextInt(10) + 0;
if (j > 0)
{
j--;
}
}
}
rn[i] = n;
}
for (int l = 0; l < 10; l++)
{
System.out.print(rn[l]);
}
System.out.println();
}
据我了解,这不应该让任何重复的数字通过,但确实如此。我做错什么了吗?
PS:我不允许使用集合或数组列表。我正在使用 Ready To Program IDE,它显然不支持这些。
【问题讨论】:
-
我尝试添加 Java 标签,因为它可以帮助您从更了解该语言的人那里获得解决方案,但您的帖子已经有 5 个标签:)
-
@versvs 好建议,改shuffle为java
-
这些'+0;'是什么适合吗?是巫毒吗?
-
是为了一些编码练习还是家庭作业?您是否允许在您的实现中使用 Java 集合框架?因为如果你是,最明显的就是使用 Set 来组装你的随机值
-
从一开始就有缺陷的算法。你根本不想要随机数,你想要随机顺序的数字 0..9。所以用 0..9 填充数组,然后用简单的 Fisher-Yates shuffle shuffle 它。
标签: java arrays for-loop random