如何在Java中随机分配2个字符代码

时间:2016-05-27 20:43:16

标签: java

我有两个可以分配给我的程序中的参与者的组,这些组在枚举中表示为" RG"和" NP"。我想随机分配这些组。有没有办法在java中这样做?

例如,当我随机生成参与者的ID(我目前正在写一个文件)时,我这样做了:

Random rndbid = new Random();
int msDBID = 10 + rndbid.nextInt(90);
stringB.append(String.valueOf(msDBID));
stringB.append("\t");

是否有类似的东西,这将使我能够做同样的事情,但不是随机生成一个int,它会随机生成一个" RG"或" NP"?

如果您需要澄清,请告诉我。提前致谢!

编辑:我是Java的新手,所以请尽量解释!我正在学习。谢谢!

5 个答案:

答案 0 :(得分:5)

您可以在枚举中创建静态方法以生成随机实例。如果您决定添加更多枚举值,则会缩放。

public enum MyEnum {
    RG,
    NP;

    public static MyEnum getRandom(Random random) {
        MyEnum[] allMyEnums = MyEnum.values();
        int randomEnumIndex = random.nextInt(allMyEnums.length);
        return allMyEnums[randomEnumIndex];
    }
}

既然你提到你是Java的新手,那么这是一个基本的纲要。在Java中,enum可以有与之关联的方法。在这种情况下,我添加了一个静态方法(称为MyEnum.getRandom(random))。这种方法不必是枚举的一部分,但它可能很方便。

枚举的.values()方法将按顺序返回包含所有枚举值的数组。我把它放在变量allMyEnums中。因此,allMyEnums[x]将返回第x个索引枚举。在这种情况下,allMyEnums[0]将是RG,allMyEnums[1]将是NP。在allMyEnums内,我返回一个介于0和值之间的随机整数(数组长度)。这将最终随机选择一个枚举。

答案 1 :(得分:3)

使用random.nextInt()从枚举值中进行选择。

Random r = new Random();
Group group = Groups.values()[r.nextInt(Groups.values().length];

答案 2 :(得分:1)

您可以使用此方法:

public String flip(){
    Random randomNum = new Random();
    int result = randomNum.nextInt(2);
    if(result == 0){
        return "RG";
    } else {
        return "NP";
    }
}

答案 3 :(得分:0)

生成一个0或1的int。将0映射到RG,将1映射到NP。问题解决了。

答案 4 :(得分:0)

您可以使用Random仅生成01,然后使用它生成一个字符串或另一个字符串:

rndbid.nextInt(2) == 0 ? "RG" : "NP"; // original answer
rndbid.nextBoolean() ? "RG" : "NP"; // even better