Java 如何在2d数组中的随机位置放置一定数量的整数?
我试着把一定数量的整数放在一个随机点的数组中,而不把它们放在同一个地方 我的combine方法连接两个给定的整数并返回Int。 Places是一个arrayList,用于保存已放入数组的整数的位置。 random方法返回两个给定整数之间的随机整数 联合方法有效,随机方法也有效,但我不确定为什么它不起作用Java 如何在2d数组中的随机位置放置一定数量的整数?,java,Java,我试着把一定数量的整数放在一个随机点的数组中,而不把它们放在同一个地方 我的combine方法连接两个给定的整数并返回Int。 Places是一个arrayList,用于保存已放入数组的整数的位置。 random方法返回两个给定整数之间的随机整数 联合方法有效,随机方法也有效,但我不确定为什么它不起作用 public void fillOne(int b) { for(int x = 0; x < b; x++) { int kachow = random(
public void fillOne(int b)
{
for(int x = 0; x < b; x++)
{
int kachow = random(0, 5);
int kachigga = random(0, 5);
int skrrt = combine(kachow, kachigga);
if(notInArray(skrrt))
{
locations[kachow][kachigga] = 1;
places.add(skrrt);
}
}
}
public void fillOne(int b)
{
对于(int x=0;x
您还没有真正解释什么不起作用。但您的算法中的一个明显缺陷是不能保证将b
元素设置为1
。如果您的算法生成一个重复的位置,那么它将设置少于b
个元素
您存储组合位置的逻辑过于复杂。一种解决方案是颠倒逻辑:生成一个表示两个维度的整数,然后在设置位置时将其分成两部分。这使得检查简单得多
例如,如果阵列为5x5:
Set<Integer> positions = new HashSet<>();
while (positions.size() < n)
positions.add(random.nextInt(25));
for (int p: positions)
locations[p/5][p%5] = 1;
notInArray是如何工作的?有比赛吗?有什么地方吗?因为你没有发送kachow和kachigga在这种情况下,我假设你列表中的任何匹配都会使其为假,所以所有可能的随机0,5都会很快被填充。你有一个名为locations的2d数组,你正在尝试将1放入其中的随机位置??
random.ints(0, 25)
.distinct().limit(n)
.forEach(p -> locations[p/5][p%5] = 1);