java - 快速生成随机列元素的方法

标签 java algorithm actionscript-3 random

我有一个简单的问题,我需要一种快速的方法来实现它。 假设我有两列,例如

1 6 
3 5
5 3 

如您所见,第 2 列中有元素 3 和 5,我想在第 1 列中生成一个新的随机元素,这样第 2 列中就没有匹配的元素。元素可以从 1 ->12

我的方法:我已经将第二列中的所有元素添加到一个哈希集中,然后我搜索第一列中的元素,并检查它们是否在哈希集中,如果是,则尝试生成一个新的随机元素。

我有另一个想法是将问题可视化为一维数组,删除重复项等,但我不想修改第二个数组中的任何元素。

最佳答案

我认为这是一个相当直接的解决方案

    Random r = new Random();
    List<Integer> numbers = new ArrayList<>(Arrays.asList(new Integer[] {
            1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }));

    Integer[] colOne = new Integer[] { 6, 5, 3 };
    numbers.removeAll(Arrays.asList(colOne));

    int notFoundInColOne = numbers.get(r.nextInt(numbers.size()));

本质上,我们创建了我们的范围,删除了该范围内同时也在该列中的元素,然后从我们范围的剩余部分中随机选择一个元素。

关于java - 快速生成随机列元素的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918505/

相关文章:

java - Java 中独立于提供者的加密?

java - 单击每个元素并执行操作时出现问题

algorithm - 生成数字,具有高汉明距离

string - 如何标记两个字符串之间的差异

用于眼睛跟踪的 Flash 库

ios - AS3 AIR (ios) CameraRoll 保存问题

actionscript-3 - AS3 类 CSS 对象类

java - 如何在 Android 中清除 Canvas 上的绘图

algorithm - 将小数矩阵转换为整数矩阵

java - 压缩会提高性能吗?