Java 为两个常数值之间的整数赋值?
假设我有3个整数: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()
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;
}