-2
我有一个HashMap。其中Key是playerName,value是ticketCount。例如:player1有10张门票,player2有20张门票。用Java计算加权概率
我想创建一个方法,它将返回一个playerName,当一个随机数(它是生成的)传入它。例如:如果3通过,它应该返回player1等
我有以下方法来计算概率,不知道它是否正确。
计算每个ticketCount的概率范围,然后使用if else语句比较随机数和范围。例如:如果randomNumber < = .33返回player1或randomNumber> .33和< .66,则返回player2。
创建另一个具有与ticketCounts的索引对应的playerNames的数组。例如:索引1-10将有player1等,然后执行二进制搜索。
公共类彩票{
public void calculateWinner(HashMap lotteryMap){
double total = 0;
Set<String> keySet = lotteryMap.keySet();
Iterator<String> keySetIterator = keySet.iterator();
while (keySetIterator.hasNext()) {
String key = keySetIterator.next();
total = total + (Double)lotteryMap.get(key);
}
populateRangeArray(lotteryMap, total);
}
//Approach 1
public ArrayList<Double> populateRangeArray(HashMap lotteryMap, double total){
ArrayList<Double> rangeArray = new ArrayList<Double>();
Set<String> keySet = lotteryMap.keySet();
Iterator<String> keySetIterator = keySet.iterator();
while (keySetIterator.hasNext()) {
String key = keySetIterator.next();
double value = total/(Double)lotteryMap.get(key);
rangeArray.add(value);
}
return rangeArray;
}
//Approach 2
public void populatePlayerArray(HashMap lotteryMap, double total){
int newTotal = (int)total;
String[] playerArray = new String[newTotal];
for(int i=0;i<newTotal;i++){
}
}
这是我到目前为止所。无法弄清楚approach2代码。 :(
所以,什么你的问题在哪里是你的代码 – redFIVE
对于第二部分,我想应该是另一种方式around..how从让每个球员的概率去搞清楚哪个球员?实际上是根据生成的随机数赢得的。 – kaila88