所以我在这里有一个枚举:
public enum Party {
DEMOCRAT, INDEPENDENT, REPUBLICAN
}
我目前有这个,三个课程之一:
public class ElectoralCollege {
public static final String FILE = "Electoral201X.txt";
private ArrayList <State> stateVotes;
Random rand = new Random();
public ElectoralCollege() throws IOException {
stateVotes = new ArrayList<State>();
assignStates();
}
public void assignStates() throws IOException {
File f = new File(FILE);
Scanner fReader = new Scanner(f);
while(fReader.hasNext()) {
String stateData = fReader.nextLine();
int stateEnd = stateData.indexOf(" - ");
String stateName = stateData.substring(0, stateEnd);
String stateVotes = stateData.substring(stateEnd + 2);
//System.out.println(stateName + " " + stateVotes);
}
在这里,我从一个包含州名称及其选举人票数量的文件中读取如下“佛罗里达 - 29”,所以这一切都弄清楚了。
接下来我要做的是使用一个随机对象从我的 Party 枚举中为他们分配一个派对。共和党和民主党必须有 2/5 的获胜机会......而独立必须有 1/5 的机会。然后我必须创建一个 State 对象(它以状态名称、投票数和参与方作为参数)并将其放入该数组列表中。很可能会为此使用 for each 循环,只需要对此进行更多研究。
我的问题是我如何以设定的概率为这三个方使用这个随机对象 rand 并执行它?有人有什么想法吗?
编辑:底线是:我如何为这三个政党实施 2/5 和 1/5 的概率,然后根据这些概率调用随机对象给我一个政党?
在mre的回答之后,我这样做了:
Random rand = new Random();
List<Party> parties = Arrays.asList(Party.DEMOCRAT, Party.DEMOCRAT, Party.REPUBLICAN, Party.REPUBLICAN, Party.INDEPENDENT);
稍后......
公共 void assignStates() 抛出 IOException {
File f = new File(FILE);
Scanner fReader = new Scanner(f);
while(fReader.hasNext()) {
String stateData = fReader.nextLine();
int stateEnd = stateData.indexOf(" - ");
String stateName = stateData.substring(0, stateEnd);
String numVote = stateData.substring(stateEnd + 2);
Party winner = parties.get(rand.nextInt(5));
//System.out.println(stateName + " " + numVote + " " + winner);
State voteInfo = new State(stateName, Integer.parseInt(numVote.trim()), winner);
stateVotes.add(voteInfo);
}
}