Java随机类输出1或0

Java随机类输出1或0,java,random,Java,Random,结果令人印象深刻。然而,每个人都有将近50%的人,我担心的是这个过程。有时我一卷得到10个1或者一卷得到8个0。我认为在那个时期不是真正的随机性。我想避免这种情况,只允许最多3个重复序列。有什么好的建议吗 int resetOne = 0; int resetZero = 0; Random ran = new Random(); while (y < 100) { y++; x = ran.nextInt(2);

结果令人印象深刻。然而,每个人都有将近50%的人,我担心的是这个过程。有时我一卷得到10个1或者一卷得到8个0。我认为在那个时期不是真正的随机性。我想避免这种情况,只允许最多3个重复序列。有什么好的建议吗

    int resetOne = 0;
    int resetZero = 0;
    Random ran = new Random();
    while (y < 100) {
        y++;
        x = ran.nextInt(2);
        if (x == 1) {
            resetOne++;
            resetZero = 0;
            if (resetOne == 3) {
                x = ran.nextInt(2);
            }
            oneCounter++;

        } else if (x == 0) {
            resetZero++;
            resetOne = 0;
            if (resetZero == 3) {
                x = ran.nextInt(2);
            }
            zeroCounter++;
        }

        System.out.println(x);
        System.out.println("0 = " + zeroCounter + " " + "1 = " + oneCounter);
    }
int resetOne=0;
int resetZero=0;
Random ran=新的Random();
而(y<100){
y++;
x=ran.nextInt(2);
如果(x==1){
resetOne++;
重置零=0;
如果(resetOne==3){
x=ran.nextInt(2);
}
oneCounter++;
}else如果(x==0){
重置零++;
resetOne=0;
如果(重置零==3){
x=ran.nextInt(2);
}
零计数器++;
}
系统输出println(x);
System.out.println(“0=“+zeroCounter+”“++”1=“+oneCounter”);
}

真正的随机性可能会连续出现10000次。这不太可能,但可以。因此,我强烈建议重新调整你的期望


如果你真的想要有偏差的随机性——一种逐渐减少的“公平”投币——你需要通过跟踪最近的结果和调整概率来实现这一点。

真正的随机性可能会连续出现10000次。这不太可能,但可以。因此,我强烈建议重新调整你的期望


如果你真的想要有偏差的随机性——一种逐渐减少的“公平”投币——你需要通过跟踪最近的结果和调整概率来实现这一点。

真正的随机性可能会连续出现10000次。这不太可能,但可以。因此,我强烈建议重新调整你的期望


如果你真的想要有偏差的随机性——一种逐渐减少的“公平”投币——你需要通过跟踪最近的结果和调整概率来实现这一点。

真正的随机性可能会连续出现10000次。这不太可能,但可以。因此,我强烈建议重新调整你的期望


如果你真的想要有偏差的随机性——一种逐渐减少的“公平”投币——你需要通过跟踪最近的结果并调整你的概率来实现这一点。

作为我回答之前的注意事项,如果我能预测下一个数字,它实际上不是随机的。在你的例子中,如果我连续得到三个0,我100%肯定地知道下一个数字将是1

现在,实现您所要求的最简单的方法就是引入两个新变量:一个在结果更改时重置的计数器,以及一个最后返回值的缓存。如果计数器在一行中达到结果允许的最大值(一行中有三个0),则只需返回另一个数字并重置计数器(并将此返回值存储在lastReturned缓存中)


这将使您的分布接近50%,因为它在1和0中的分布应该大致相同。测试它以验证它应该很容易。

作为我回答之前的注意事项,如果我能预测下一个数字,它实际上不是随机的。在你的例子中,如果我连续得到三个0,我100%肯定地知道下一个数字将是1

现在,实现您所要求的最简单的方法就是引入两个新变量:一个在结果更改时重置的计数器,以及一个最后返回值的缓存。如果计数器在一行中达到结果允许的最大值(一行中有三个0),则只需返回另一个数字并重置计数器(并将此返回值存储在lastReturned缓存中)


这将使您的分布接近50%,因为它在1和0中的分布应该大致相同。测试它以验证它应该很容易。

作为我回答之前的注意事项,如果我能预测下一个数字,它实际上不是随机的。在你的例子中,如果我连续得到三个0,我100%肯定地知道下一个数字将是1

现在,实现您所要求的最简单的方法就是引入两个新变量:一个在结果更改时重置的计数器,以及一个最后返回值的缓存。如果计数器在一行中达到结果允许的最大值(一行中有三个0),则只需返回另一个数字并重置计数器(并将此返回值存储在lastReturned缓存中)


这将使您的分布接近50%,因为它在1和0中的分布应该大致相同。测试它以验证它应该很容易。

作为我回答之前的注意事项,如果我能预测下一个数字,它实际上不是随机的。在你的例子中,如果我连续得到三个0,我100%肯定地知道下一个数字将是1

现在,实现您所要求的最简单的方法就是引入两个新变量:一个在结果更改时重置的计数器,以及一个最后返回值的缓存。如果计数器在一行中达到结果允许的最大值(一行中有三个0),则只需返回另一个数字并重置计数器(并将此返回值存储在lastReturned缓存中)

这将使您的分布接近50%,因为它在1和0中的分布应该大致相同。测试它以验证它应该很容易。

这就是为什么它被称为随机。只是有时候对吗?无论你得到什么输出,它仍然是随机生成的。如果你想改变它,那你就不再叫它随机了这就是为什么叫它随机的原因。只是有时候对吗?无论你得到什么输出,它仍然是随机生成的。如果你想改变它,那你就不再叫它随机了这就是为什么叫它随机的原因。只是有时候对吗?无论你得到什么输出,它仍然是随机生成的。如果你想改变