如何在 Java 中创建包含 10 个任意范围的表并选择适当的间隔



这是一组介于 [0,100] 之间的数字。如何创建一个包含 10 个任意范围的表来存储它们并选择适当的间隔?我的想法是先创建一个数组并随机切割 0~100。我被困在这里了....如何按顺序和随机创建间隔?

在 0 到 100 之间选择 9 个不同的(无替换)值。对它们进行排序(如果您在我链接的线程中使用解决方案,则它们已经排序),并将它们用作间隔边界。

编辑:如果允许范围为空,甚至不必担心唯一性;只需选择9个随机值,对它们进行排序,你就有了间隔边界。

下面是此任务的 Java 实现:

import java.util.*;
public class Intervals {
    public static int[][] getIntervals(int lowBound, int highBound,
            int intervalCount) {
        int intervalLength = highBound - lowBound;
        boolean[] used = new boolean[intervalLength + 1];
        used[0] = true;
        used[intervalLength] = true;
        Random r = new Random();
        for (int i = 0; i < intervalCount - 1; i++) {
            int candidate = 0;
            while (used[candidate]) {
                candidate = lowBound + r.nextInt(intervalLength);
            }
            used[candidate] = true;
        }
        int[][] result = new int[intervalCount][2];
        int previous = -1;
        int next;
        int count = 0;
        for (int i = 1; i <= intervalLength; i++) {
            if (used[i]) {
                next = i;
                result[count][0] = previous + 1 + lowBound;
                result[count][1] = next + lowBound;
                count++;
                previous = next;
            }
        }
        return result;
    }
    public static void main(String[] args) {
        System.out.println(Arrays.deepToString(getIntervals(0, 100, 10)));
    }
}

最新更新