我试图从7个字符串的数组中返回一个“唯一”字符串。它们将被存储到数据库中并需要随机分配,因此我使用Collections.shuffle来获取随机的不同字符串,或者我认为。
以下是我正在使用的内容:
public String RandomNumber() {
List<String> roles = Arrays.asList("Mafia", "Mafia", "Civilian", "Civilian", "Civilian", "Civilian", "Civilian");
Collections.shuffle(roles);
return roles.get(0);
}
我希望确实有2个黑手党,还有5个平民,但我正在重复。那是为什么?
(另外,我计划让不同数量的玩家不同于7,如果有人可以根据玩家数量分配角色(例如每3个人),我可以向正确的方向发展平民,有1个黑手党)
答案 0 :(得分:0)
你可以试试这个
public String RandomNumber() {
List<String> roles = Arrays.asList("Mafia", "Mafia", "Civilian", "Civilian", "Civilian", "Civilian", "Civilian");
TreeSet treeset = new TreeSet();
treeset.addAll(roles);
roles = new ArrayList<>();
for (Iterator it = treeset.iterator(); it.hasNext();) {
Object i = it.next();
roles.add((String) i);
}
Collections.shuffle(roles);
return roles.get(0);
}
答案 1 :(得分:0)
你可以在获得后将其删除。像这样的Smth:
public String RandomNumber() {
List<String> roles = new ArrayList<>(Arrays.asList("Mafia", "Mafia", "Civilian", "Civilian", "Civilian", "Civilian", "Civilian"));
Collections.shuffle(roles);
String role = roles.get(0);
roles.remove(0);
return role;
}