我试图在Android中创建一个案例A或案例B的随机(50/50)机会,我需要它尽可能简单和资源效率。我查看了stackoverflow,但我找到的随机布尔值是在C ++中吗?
如果有人可以给我一个关于如何做到这一点的建议,无论是使用布尔值还是使用字符串/整数(因为我被告知布尔值是原始的),我将不胜感激。
我尝试了以下
public static boolean getRandomBoolean() {
return Math.random() < 0.5; }
boolean atrg = getRandomBoolean();
if (atrg = true)
{ Toast.makeText(cxt, "TRUE", Toast.LENGTH_SHORT).show(); }
else if (atrg = false)
{ Toast.makeText(cxt, "FALSE", Toast.LENGTH_SHORT).show(); }
但几乎在所有情况下,我测试过(&gt; 20x),它是真的吗?这可能是一个愚蠢的问题,但getRandomBoolean是一个布尔值还是一个int / double?对不起,我对android很新,你可能已经猜到了。
答案 0 :(得分:3)
您的随机生成器很好,但显示结果的吐司不是。
问题出在if语句中,您使用单个等号(=
)这是一个赋值。这项任务的结果将是真实的,因此它永远不会显示“FALSE”吐司。
试试这个。
boolean atrg = getRandomBoolean();
if (atrg) {
Toast.makeText(cxt, "TRUE", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(cxt, "FALSE", Toast.LENGTH_SHORT).show();
}
答案 1 :(得分:1)
这不是您检查boolean
的方法。 =
是赋值运算符,==
用于比较。你应该检查:
if(atrg == true)
或者在布尔值的情况下,它只是:
if(atrg)
您的陈述:
if(atrg = true)
将atrg
分配给true
,您永远不会收到false
个案件。
答案 2 :(得分:-1)
只需使用Math.random(),它将返回0到1之间的值。示例如下:
public static boolean getRandomBoolean() {
return Math.random() < 0.5;
}
public static void main(String[] args) {
System.out.println(getRandomBoolean());
}