Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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 - Fatal编程技术网

Java 概率百分比随机布尔发生器

Java 概率百分比随机布尔发生器,java,Java,我正在尝试编写一些代码,我想使用随机类,Java已经将一些设置为true或false,但是结果会受到一定几率的影响 例如,我想创建一个方法,在有人生病或没有生病时随机生成。如果服用维生素,患病几率为20%。如果不服用维生素,就有25%的疾病 我做了一些研究,发现API中的Random类确实有一个Random boolean方法,但我应该使用它吗?如果是这样,我将如何实现我的机会百分比 我知道我需要一个测试类来创建person对象,我知道如何做到这一点,但这里是我所拥有的。不知道从这里到哪里去 i

我正在尝试编写一些代码,我想使用随机类,Java已经将一些设置为true或false,但是结果会受到一定几率的影响

例如,我想创建一个方法,在有人生病或没有生病时随机生成。如果服用维生素,患病几率为20%。如果不服用维生素,就有25%的疾病

我做了一些研究,发现API中的Random类确实有一个Random boolean方法,但我应该使用它吗?如果是这样,我将如何实现我的机会百分比

我知道我需要一个测试类来创建person对象,我知道如何做到这一点,但这里是我所拥有的。不知道从这里到哪里去

import java.util.Random;

public class SicknessTest {

    private boolean sickness;
    private boolean vitamin;

    public void takeVitamin()
    {
        vitamin = true;
    }

    public void getSick()
    {

    }

}

如果您知道目标百分比,例如35%的概率为真,则生成一个介于0和99之间的随机整数。如果小于35,则为真。否则为false。

生成一个double并检查它是否大于要比较的值
nextDouble()
返回一个介于0和1.0之间的值

Random rnd = new Random();

public void getSick()
{
   if (vitamin)
     sickness = rnd.nextDouble() <= 0.2;
   else
     sickness = rnd.nextDouble() <= 0.25;
 }
Random rnd=new Random();
公众假期生病
{
if(维生素)

sick=rnd.nextDouble()好的,我会测试一下,谢谢。我认为这比使用nextDouble()更不可取。例如,如何以100亿分之一的概率这样做?Int溢出。另一方面,只要您对整数百分比满意,这就避免了浮点数学固有的不精确性。您可能希望调用
rnd.nextInt(100)
因为它的上限不是结果范围的一部分。这就是我想要的简单性。问题似乎是CS101式的家庭作业,我不想拖入一大堆外部性。效果很好,但为什么不下一步呢?在极端情况下更精确一些。@SeanOwen同意。我试图运行一些快速基准测试,但还没有得到使用float而不是double的严重性的明确估计,但这肯定是提高测试准确性的一个简单方法。这里的代码也可以简化为
sick=rnd.nextDouble()