随机化定性变量

时间:2013-05-07 06:47:52

标签: java

我需要根据比例白色随机化“种族”变量:黑色:亚洲,例如2:1:1

我的程序创建新人(对象),我希望随机化他们的种族

//CONSTRUCTOR

public people() {
    race = raceGenerator();
}

public String raceGen() {
    String info;
    double probAllocation = Math.random();
    if (probAllocation < 0.5) {
        info = White;
    } else if (0.5 < probAllocation < 0.75) {
        info = Black;
    } else {
        info = Asian;
    }
    return info;
}

问题在于行else if (0.5 < probAllocation < 0.75) {info = Black;}

我的IDE告诉我,我有bad operand types

这是什么意思,如果这不起作用,有更好的方法来随机化定性变量吗?

3 个答案:

答案 0 :(得分:4)

你不能像数学一样链接比较运算符。

语法为:

else if (0.5 < probAllocation && probAllocation < 0.75)

或者更确切地说,为了避免你的范围内出现漏洞:

else if (0.5 <= probAllocation && probAllocation < 0.75)

甚至只是

else if (probAllocation < 0.75) 

因为每个小于0.5的值都将由第一个if处理。

此外,变量在Java中以小写字母开头,常量都是大写的。因此值应该是BLACK,WHITE和ASIAN。你应该考虑使用枚举而不是字符串来表示这些值,以使你的代码更清晰,更安全。

答案 1 :(得分:0)

你需要两次测试......

if (0.5 < probAllocation && probAllocation < 0.75) {
  ...
}

答案 2 :(得分:0)

  1. 代码行else if (0.5 < probAllocation < 0.75) {info = Black;}未正确写入。你应该使用条件AND运算符来测试这两种情况。

    否则如果(0.5&lt; probAllocation&amp;&amp; probAllocation&lt; 0.75){info = Black;}

  2. 要生成随机数,您可以使用java.util包中的Random类。

    随机randomGenerator = new Random();

    int rInt = randomGenerator.nextInt(10); //这将生成0到10之间的随机数。