我正在尝试建立一个交易或不交易的游戏。我需要为每个案例分配一个货币价值。我想知道这是否可能,如果可能,如何。我会设置2个数组,案例编号(1-26)和不同值的钱(我在开头设置的1到1,000,000之间的具体数字)。然后,我想从数组中取出一个随机值并在数组中为其赋值,但也要检查以确保它不存储在另一个案例变量中。
int cases[]=new int[26];
int money = {1,2,,5,10,25,50,75,100,200,300,400,...};
存入金钱的每一个值都只使用一次。 每个案例都会被分配一个且只有一个值。
答案 0 :(得分:4)
改为使用ArrayList。
ArrayList<Integer> money = ....;
for (int i = 0; i < 26; i++){
int pick = (int)(Math.random() * money.size());
cases[i] = money.remove(pick);
}
但是,如果您要使用ArrayList,您也可以利用Collections
中的大量方法,例如Collections#shuffle。根据文档,
使用默认的随机源随机置换指定的列表。所有排列都以大致相等的可能性发生。
然后您可以使用如下方法:
ArrayList<Integer> money = ....;
Collections.shuffle(money);
//money is now functionally what `cases` used to be
答案 1 :(得分:0)
你应该在money [] array
中至少有26个值 int cases[]=new int[26];
int[] money = {1,2,5,10,25,50,75,100,200,300,400....};
Random random = new Random();
int index = 0;
firstLoop:
while(cases[25]==0){
int randomChosenIndex = random.nextInt(money.length);
int randomChosenValueFromMoney = money[randomChosenIndex];
for (int i = 0; i < index; i++) {
if (cases[i]==randomChosenValueFromMoney) {
continue firstLoop;
}
}
cases[index++] = randomChosenValueFromMoney;
}