Java 如何选择已创建的随机真布尔变量?

Java 如何选择已创建的随机真布尔变量?,java,random,boolean,Java,Random,Boolean,假设我有四个布尔变量 布尔a; 布尔b; 布尔c; 布尔d; 现在,在我选择其中一个变量之前,我运行一个函数来找出它们是真是假,为什么它们是真是假并不相关 让我们说: a=假; b=正确; c=假; d=正确; 现在,因为b和d是真的,我想随机选择其中一个;如果这三个变量是真的,那么我想从这三个变量中随机选择一个 我不知道如何才能做到这一点。您可以使用java.util.Random类生成一个随机数并将绑定设置为1。然后它生成0或1。现在您可以检查,如果随机数是0或1,如果是0,则选择b,如果是

假设我有四个布尔变量

布尔a; 布尔b; 布尔c; 布尔d; 现在,在我选择其中一个变量之前,我运行一个函数来找出它们是真是假,为什么它们是真是假并不相关

让我们说:

a=假; b=正确; c=假; d=正确; 现在,因为b和d是真的,我想随机选择其中一个;如果这三个变量是真的,那么我想从这三个变量中随机选择一个


我不知道如何才能做到这一点。

您可以使用java.util.Random类生成一个随机数并将绑定设置为1。然后它生成0或1。现在您可以检查,如果随机数是0或1,如果是0,则选择b,如果是1,则选择d。3个布尔值也是如此

// Import the class
import java.util.Random;

// Create an Instance of Random
Random r = new Random();

// Generate a random number between 0 and 1
short randomNumber = r.nextInt(1);

if (randomNumber == 0)
{
    // do something with b     
}

if (randomNumber == 1)
{
    // do something with d     
}

似乎您试图以某种方式选择一个特定的布尔变量a、b、c、d。 但是,如果将未绑定的布尔值指定给布尔变量,则它们将使用相同的共享实例:

布尔值a=假; 布尔b=真; 布尔c=假; 布尔d=真; System.out.printlna==c;//打印true,相同的布尔值。FALSE System.out.printlnb==d;//打印true,相同的布尔值。true 为了区分不同的布尔变量,需要使用不推荐使用的构造函数创建不同的布尔变量:

布尔值a=新布尔值FALSE; 布尔值b=新布尔值True; 布尔值c=新布尔值FALSE; 布尔值d=新布尔值True; System.out.printlna==c;//打印错误,不完全相同 System.out.printlna.equalsc;//打印正确,相等 System.out.printlnb==d;//打印错误,不完全相同 System.out.printlnb.equalsd;//打印正确,相等 现在,在确保有不同的布尔对象后,我们可以随机选择它:

公共静态布尔getTrueIndexRandomlyBoolean。。。旗帜{ List=Arrays.asListflags; //获取值为true的标志的索引 int[]索引=IntStream.range0,list.size .filterlist::获取 .托雷; 随机=新随机; int randomIndex=索引[random.nextindexes.length];//选择一个索引 System.out.printrandom index=+randomIndex; 返回标志[随机索引]; } 测试:

布尔随机; System.out.PrintLn从b、d中选择; 对于int i=0;i<4;i++{ System.out.print+i+1+:; random=getTrueRandomlya,b,c,d; System.out.println->+random==b?b:d; } a=新布尔值true; System.out.PrintLn从a、b、d中选择; 对于int i=0;i<4;i++{ System.out.print+i+1+:; random=getTrueRandomlya,b,c,d; System.out.println->+random==a?a:random==b?b:d; } 输出


如果您想从四个值中选择,只包括那些为真的值,那么您希望始终随机选择值为真?。。。否则,你到底想做什么?如何区分所选的一个?你有固定数量的布尔变量吗?如果没有一个是真的会发生什么?Ic。所以你想随机选择任何一个为真的变量?我会将变量创建为对象:new Booleaninitvalue。然后使用一个函数获取这些对象的数组,并随机选择其中一个碰巧为真的对象。
Selecting from b, d
#1: random index=3 -> d
#2: random index=1 -> b
#3: random index=3 -> d
#4: random index=1 -> b
Selecting from a, b, d
#1: random index=3 -> d
#2: random index=1 -> b
#3: random index=1 -> b
#4: random index=0 -> a