java - 在java中为数组分配随机数(不重复)

标签 java arrays

我正在尝试设置一个“一掷千金”的游戏。我需要为每个案例分配一个货币值。我想知道这是否可能,如果可以,如何实现。我会设置 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/

相关文章:

python - 与 ndarray 的矩阵乘法

c - 二维字符串数组和 Strcpy 错误?

javascript - 通过索引从嵌套数组中删除项目(递归)

java - Spring Boot 与 Spring Loaded 和 Gradle 配合使用

java - 我可以将 Arrays.fill 与二维数组一起使用吗?如果是这样,我该怎么做?

java - 仅从 map 中提取相关键

java - Java中Process类的用途是什么?

c - 结构类型的排序数组

java - 将 RxJava Single 转换为 Mono

java - 有没有办法让Intellij在我刚刚提取参数时用方法替换重复代码?