Java 如何在2d数组中的随机位置放置一定数量的整数?

Java 如何在2d数组中的随机位置放置一定数量的整数?,java,Java,我试着把一定数量的整数放在一个随机点的数组中,而不把它们放在同一个地方 我的combine方法连接两个给定的整数并返回Int。 Places是一个arrayList,用于保存已放入数组的整数的位置。 random方法返回两个给定整数之间的随机整数 联合方法有效,随机方法也有效,但我不确定为什么它不起作用 public void fillOne(int b) { for(int x = 0; x < b; x++) { int kachow = random(

我试着把一定数量的整数放在一个随机点的数组中,而不把它们放在同一个地方

我的combine方法连接两个给定的整数并返回Int。 Places是一个arrayList,用于保存已放入数组的整数的位置。 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);