java - 连续生成随机枚举值而不两次获得相同的值

标签 java random enums

我有一个要随机化的枚举团队。所以我有:

public enum Teams { TEAM1, TEAM2, TEAM3, TEAM4, TEAM5, TEAM6; }

然后我有一个随机方法来随机生成值:

public static Teams getRandomTeam() {
    return Teams.values()[(int) (Math.random() * Teams.values().length)];
}

这确实会返回一个随机生成的团队,但是我需要,一旦生成了一个团队,比如 TEAM2,它就不能再次生成。

我正在使用:

System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());

(我知道这是错误的,因为它一遍又一遍地调用方法。

在我运行程序的那一刻,输出可能是:

团队是:TEAM2

团队是:TEAM2

团队是:TEAM4

团队是:TEAM2

团队是:TEAM3

团队是:TEAM2

但我需要我的程序只输出一次枚举值。 谢谢

最佳答案

只需使用 Collections.shuffle .

List<Team> teams = new ArrayList<>();
Collections.addAll(teams, Team.values());
Collections.shuffle(teams);

关于java - 连续生成随机枚举值而不两次获得相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18145766/

相关文章:

random - 可以将Fortran 90的随机数生成器用于Monte Carlo集成吗?

Delphi:用于索引 TStringList 项的 Integer 以外的类型

java - 使用 htmlunitdriver 捕获屏幕截图?

algorithm - 类似 iPod 的 shuffle 算法的高效实现?

java - 检查 |或||正则表达式

python - 我什么时候应该更喜欢 random.choice() 而不是 random.randint?

java - 使用 Spring 注入(inject)枚举

c# - 从 IronPython 中的其他命名空间访问 C# 枚举和类

java - 如何将 HTML 元素设置到 session grails 中

Java:参数化可运行