我正在尝试设置一个“一掷千金”的游戏。我需要为每个案例分配一个货币值。我想知道这是否可能,如果可以,如何实现。我会设置 2 个数组,case 代表案例编号 (1-26),money 代表不同的值(我在开始时设置的 1 到 1,000,000 之间的特定数字)。然后,我想从数组 Money 中取出一个随机值,并在数组 case 中为其分配一个值,但还要检查以确保它尚未存储在另一个 case 变量中。
int cases[]=new int[26];
int money = {1,2,,5,10,25,50,75,100,200,300,400,...};
存储在货币中的每个值都只会使用一次。 每种情况都会被分配一个且仅有一个值。
最佳答案
改用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 。根据文档,
Randomly permutes the specified list using a default source of randomness. All permutations occur with approximately equal likelihood.
然后您可以使用如下方法:
ArrayList<Integer> money = ....;
Collections.shuffle(money);
//money is now functionally what `cases` used to be
关于java - 在java中为数组分配随机数(不重复),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33595993/