Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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中的概率_Java_Probability - Fatal编程技术网

Java中的概率

Java中的概率,java,probability,Java,Probability,我很想知道,如何在Java中实现概率?例如,如果一个变量显示的概率是1/25,那么我将如何实现它?或者其他可能性?请给我指出大致的方向。您将使用生成一个随机数,然后根据文本进行测试,以匹配您试图达到的概率 因此: boolean val = new Random().nextInt(25)==0; val将有1/25的概率为真(因为nextInt()有偶数概率返回从0开始到25(但不包括25)的任何数字。) 当然,您必须导入java.util.Random也是 正如下面指出的,如果您得到的是多

我很想知道,如何在Java中实现概率?例如,如果一个变量显示的概率是1/25,那么我将如何实现它?或者其他可能性?请给我指出大致的方向。

您将使用生成一个随机数,然后根据文本进行测试,以匹配您试图达到的概率

因此:

boolean val = new Random().nextInt(25)==0;
val
将有1/25的概率为真(因为
nextInt()
有偶数概率返回从0开始到25(但不包括25)的任何数字。)

当然,您必须
导入java.util.Random也是

正如下面指出的,如果您得到的是多个随机数,那么重用随机对象比一直重新创建它更有效:

Random rand = new Random();
boolean val = rand.nextInt(25)==0;


通常使用随机数生成器。其中大多数返回一个间隔为[0,1]的数字,因此您将检查该数字是否为Java有一个名为的类,该类可以生成随机数。如果你想让概率为1/25的事情发生,只需生成一个介于1和25之间(或0和24之间)的随机数,然后检查这个数是否等于1

if(new java.util.Random().nextInt(25)==0){
    //Do something.
}

也许你可以通过生成随机数来实现这一点

  Random rn = new Random();
    double d = rn.nextDouble();     // random value in range 0.0 - 1.0
    if(d<=0.04){
    doSomeThing();
    }
Random rn=new Random();
双d=rn.nextDouble();//0.0-1.0范围内的随机值

如果(d从1.7开始,最好使用(至少在并发环境中):

与当前线程隔离的随机数生成器。与Math类使用的全局随机生成器一样,ThreadLocalRandom使用内部生成的种子进行初始化,该种子不可修改。如果适用,在并发程序中使用ThreadLocalRandom而非共享随机对象通常会遇到ch减少了开销和争用。当多个任务(例如,每个任务都是ForkJoinTask)在线程池中并行使用随机数时,使用ThreadLocalRandom尤其合适。 此类的用法通常应为以下形式:ThreadLocalRandom.current().nextX(…)(其中X为Int、Long等)。当所有用法均为此形式时,不可能在多个线程之间意外共享ThreadLocalRandom


此类还提供了其他常用的有界随机生成方法。

+1:放置
新随机()
在一个字段或变量中,重复使用它将有助于提高效率。@PeterLawrey您当然是对的,我已经对答案进行了适当的编辑。我只是把它作为一个一行的示例!查看java Random类。它允许您生成随机数,您可以从那里开始……在一般情况下,此解决方案使用rand.nextDouble()比公认的答案更好,因为它可以应用于任何任意概率(而不仅仅是给定整数x的1/x)。例如,如果您的目标概率为33.5%,则没有使用rand.nextInt()的简单、干净的解决方案@shiri,这取决于潜在的精度问题。使用整数可以创建一个介于0和1000之间的整数,并检查其值是否低于335。同意,我认为这取决于偏好。当我想到概率时,我倾向于用[0,1]范围内的数字来思考,因此我发现nextDouble()
if( Math.random() <= 0.04 ) {
  //we hit the 1/25 ( 4% ) case.
}
if(new java.util.Random().nextInt(25)==0){
    //Do something.
}
  Random rn = new Random();
    double d = rn.nextDouble();     // random value in range 0.0 - 1.0
    if(d<=0.04){
    doSomeThing();
    }
ThreadLocalRandom.current().nextInt(25) == 0