Java 以正确的方式用随机数填充数组,每四个数之和等于或大于两个

Java 以正确的方式用随机数填充数组,每四个数之和等于或大于两个,java,arraylist,random,java-stream,Java,Arraylist,Random,Java Stream,我需要一些帮助或提示。有一个代码: public class RandomInArray { public static void main(String[] args) { Random random = new Random(); int[] array = random.ints(8, 0, 2).toArray(); System.out.println(Arrays.toString(array)); } } 示例:[1

我需要一些帮助或提示。有一个代码:

public class RandomInArray {
    public static void main(String[] args) {
        Random random = new Random();
        int[] array = random.ints(8, 0, 2).toArray();
        System.out.println(Arrays.toString(array));
    }
}
示例:[1,0,1,0,0,1,0,1]

数组中每4个数字的总和必须至少为2。 示例:[1,0,1,0,0,1,0,1] 如果前1+0+1+0是正确的,则总和>=2。 比: 0,1,0,0,和为1。不对。 1,0,0,1,和为2。对的 0,1,0,1,和为2。对的 如何扩展该方法以在每次更正数组中元素的随机混合时打印出来? 有8个元素的正确示例。如果例如20个元素,更少或更多,结果应该是相同的。 正确的例子:

[1,0,0,1,1,1,1,0]
[1,1,0,1,0,0,1,1]
[0,1,1,0,1,0,1,0]
[1,1,1,1,1,1,1,1]

如果你对随机数设置了一个条件,那么它们就不再是随机数了。您可以随机生成前两个数字,然后使用更有限的选项集选择下两个

  • (0,0)后面必须跟(1,1)
  • (0,1)或(1,0)后面可以跟(0,1)或(1,0)
  • (1,1)后面可以跟(0,0)、(0,1)、(1,0)或(1,1)

然后将帧移动1,查看最后三个已经选择的数字。这三个元素的总和将限制下一个数字的可能性。

如果前20个元素更少或更多,结果应该是相同的这句话是什么意思?嗨,这意味着数组中有8个元素的解决方案目前对我来说很好,但如果我想将列表扩展到超过8个元素到20个,例如,它也应该有用。我建议用你刚才向我解释的方式把它写进问题中。