Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java x=(int)(Math.random()*1)0或1的概率是多少?_Java_Math_Random - Fatal编程技术网

Java x=(int)(Math.random()*1)0或1的概率是多少?

Java x=(int)(Math.random()*1)0或1的概率是多少?,java,math,random,Java,Math,Random,这就是确切的代码,然后我有一个案例0:和案例1:的开关,似乎案例1:每次都会出现,我希望有50/50的机会出现0或1这是正确的方式还是我应该使用1.5,或者这到底是如何工作的 talka = (int)(Math.random() * 1); switch(talka) { case 0: { talk.setAnimationListener(this); talk.playtim

这就是确切的代码,然后我有一个案例0:和案例1:的开关,似乎案例1:每次都会出现,我希望有50/50的机会出现0或1这是正确的方式还是我应该使用1.5,或者这到底是如何工作的

talka = (int)(Math.random() * 1);
        switch(talka)
        {

        case 0:
        {
            talk.setAnimationListener(this);
            talk.playtimes(1,24);
            startService(new Intent(this, love1.class));
            break;
        }
        case 1:
        {
            talk.setAnimationListener(this);
            talk.playtimes(1,12);
            startService(new Intent(this, love2.class));
            break;
        }
        }

只需使用
java.util.Random
对象并简单地调用
nextBoolean()
,它将以50:50的比例返回true或false。就像数学一样简单。PI

这个问题与演员的工作方式有关

在五月份的测试中,Java基本上是“修剪”十进制结果,并简单地去掉“整数”组件。但是,如果我将结果四舍五入,结果会在0和1之间翻转

有戏

int ones = 0;
int zeros = 0;
for (int index = 0; index < 100; index++) {

    double rand = Math.random() * 1;
    if (Math.round(rand) == 1) {
        ones++;
    } else {
        zeros++;
    }
    System.out.println(rand + " - " + (int)Math.round(rand) + " - " + (int)Math.random() * 1);

}

System.out.println("Ones = " + ((float)ones / 100f));
System.out.println("Zeros = " + ((float)zeros / 100f));
int-one=0;
整数零=0;
对于(int-index=0;index<100;index++){
double rand=Math.random()*1;
如果(数学四舍五入(兰德)==1){
1++;
}否则{
零++;
}
System.out.println(rand+“-”+(int)Math.round(rand)+“-”+(int)Math.random()*1);
}
System.out.println(“one=”+((float)one/100f));
System.out.println(“Zeros=“+((float)Zeros/100f));
这是我的简单测试,我在50/50分左右(+/-)


正如气垫船所指出的,在这种情况下最好使用
java.util.Random

-使用
java.util.Random
会更好更容易

-使用its的
nextBoolean()
方法

例如:

public class Rand {

    public static void main(String[] args){

        Random r = new Random();

        System.out.println(r.nextBoolean());  // See there is a equal
                                                      // true-false division
    }

}

变量
talka
将始终为零;Math.random返回一个值,其中0总是向下舍入

talka = (int)(Math.random() * 1); // between 0 and 0
你的意图也许是

talka = (int)(Math.random() * 2); // between 0 and 1
但是,使用Math.random()获取一位的效率非常低

如果你用随机数

talka = random.nextInt(2);
甚至更好

talk.setAnimationListener(this);
if (random.nextBoolean()) {
        talk.playtimes(1,24);
        startService(new Intent(this, love1.class));
} else {
        talk.playtimes(1,12);
        startService(new Intent(this, love2.class));
}

请注意,Math.random()返回0.0和1.0half/half之间的双倍值,因为random()返回均匀分布的值。他将值转换为
int
,因此如果我使用Math.round(Math.random()*1),则更可能是50/50?