随机为0或1的java随机数

随机为0或1的java随机数,java,Java,我试图得到一个随机数,它是零或一,但我的代码总是返回一: 它需要是可复制的,所以我应该能够设置种子并在将来需要时获得相同的0或1 我不明白那里出了什么问题 创建一个Random实例并调用其nextDouble方法。它返回一个介于0.0和1.0之间的值 public static int randomBit(long seed){ Random r = new Random(seed); return r.nextDouble() >= 0.5? 1 : 0; } 另外,如

我试图得到一个随机数,它是零或一,但我的代码总是返回一:

它需要是可复制的,所以我应该能够设置种子并在将来需要时获得相同的0或1


我不明白那里出了什么问题

创建一个
Random
实例并调用其
nextDouble
方法。它返回一个介于0.0和1.0之间的值

public static int randomBit(long seed){
    Random r = new Random(seed);
    return r.nextDouble() >= 0.5? 1 : 0;
}

另外,如果你不熟悉问号符号,它被称为三元运算符。它本质上是一个压缩的
if-else
语句。

这是因为您使用了
seed

如果使用以下方法测试代码:

for (int i=1; i<10000; i++){
    if (RandomNumberGenerator(i, 0, 1)==0){
        System.out.println(i);
    }
}

for(int i=1;i对您的问题的进一步调查可能会揭示答案。您选择了五个独立的测试用例。下面是一个更大的搜索:

public static void main(String[] args) {
    for (int i = 0; i < 10000; i++)
        System.out.println("Seed " + i + ": " + RandomNumberGenerator(i, 0, 1));
}
publicstaticvoidmain(字符串[]args){
对于(int i=0;i<10000;i++)
System.out.println(“种子”+i+:“+RandomNumberGenerator(i,0,1));
}
从这里我们发现4095的种子输出1,然后0开始出现


我鼓励您将来进行类似的扩展测试。

您正在java.util.Random上使用nextInt。0和1之间没有整数。 同时保持种子的随机性,否则每次跑步都会得到相同的结果。

假设您试图获取一个范围(最小值、最大值)内的随机数,那么代码工作正常


为什么你不能只使用
Math.random()
?“0到1之间的随机数”在你期望的值中是
0.1
,或者你只想要整数?
java.util.random.nextBoolean()
@WyattLowery它在上限上是独占的。所以
nextInt(2)
返回0或1代码没有问题,因此您选择的所有种子都可能给出相同的结果。您尝试过其他值吗?但它需要一致性-可重复性-因此我应该能够设置种子-您知道我的意思吗?您应该使用
=
而不是
e> 以获得相等的分布。
Math.random
返回一个
0.0的值。设置种子怎么样?@S.Matthew_English作为记录,这不是对原始问题的回答。它只是原始代码的一个更紧凑的版本。输出仍然是所有的。@parser它可以是您想要的任何数字。回头看尽管如此,您可能应该使用另一种方法。只需知道此函数将为任何给定的seen提供相同的随机位。因此,如果您需要不同的随机位,您必须不断提供不同的种子。是的,这是明智的-将来我会这样做。谢谢。
public static void main(String[] args) {
    for (int i = 0; i < 10000; i++)
        System.out.println("Seed " + i + ": " + RandomNumberGenerator(i, 0, 1));
}
public class Main {
    public static void main(String[] args) {
        System.out.println("Started");
        System.out.println("Object after seed 0: " + RandomNumberGenerator(20, 0, 10) );
        System.out.println("Object after seed 1: " + RandomNumberGenerator(10, 0, 10) );
        System.out.println("Object after seed 2: " + RandomNumberGenerator(22, 0, 10) );
        System.out.println("Object after seed 3: " + RandomNumberGenerator(93, 0, 10) );
        System.out.println("Object after seed 4: " + RandomNumberGenerator(04, 0, 10) );
    }

    public static int RandomNumberGenerator(int seed, int min, int max) {
        // create random object
        Random randomno = new Random();

        // setting seed
        /*randomno.setSeed(seed);*/

        return randomno.nextInt((max - min) + 1) + min;
    }
}