Java 为两个常数值之间的整数赋值?

Java 为两个常数值之间的整数赋值?,java,android,random,integer,Java,Android,Random,Integer,假设我有3个整数: int a, b, c; b = 25; c = 10; 现在,我希望a为25或10,但不是随机的: a = b; 我想要一些类似于if语句的东西: a = b || c; 如何实现它?if(Math.random()

假设我有3个整数:

int a, b, c;
b = 25;
c = 10;
现在,我希望
a
为25或10,但不是随机的:

a = b;
我想要一些类似于if语句的东西:

a = b || c;
如何实现它?

if(Math.random()<0.5)
if(Math.random() < 0.5)
    a = 25;
else
    a = 10;
a=25; 其他的 a=10;

Math.random()
返回一个从0到1的随机数,因此,如果你想让某件事有50%的概率为真,只需检查它是否小于(或大于)0.5。

一种方法是以毫秒为单位,例如:

if(System.currentTimeMillis() % 2 == 0){
    a=b;
} else{
    a=c;
}
请尝试以下代码:

Random rand = new Random();
int myRandom = rand.nextInt(2); // will be 0 or 1
if (myRandom == 0) {
   a=b;
} else {
   a=c;
}

@immibis的答案是实现这一点的最简单方法

对于可测试性,我强烈建议您使用显式的
Random
实例,而不是使用
Math.Random()


这允许您注入一个mock
Random
实例,允许您在需要测试特定行为时修复行为。非确定性测试是一种痛苦,应该避免。

你应该在问之前搜索一下,也许?@jayeshssolanki93也许我搜索了它,但没有找到答案?:)除非
System.currentTimeMillis
的分辨率是偶数,在这种情况下,它将始终使用b。如果查询速度足够快(比分辨率快),它还会多次返回相同的数字。然后,如果使用速度很快,则必须使用nano secs,顺便说一句,仅供参考Math.random()使用相同的逻辑生成随机数,只需将其与数字相除,使其介于0到1之间
static int pickRandomValue(Random r, int b, int c) {
  return r.nextInt(2) == 1 ? b : c;
}