首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中创建一个包含10个任意范围的表,并选择合适的间隔?

问如何在java中创建一个包含10个任意范围的表,并选择合适的间隔?
EN

Stack Overflow用户
提问于 2014-02-12 04:04:33
回答 2查看 55关注 0票数 0

下面是一组介于0,100之间的数字,如何创建一个包含10个任意范围的表来存储它们并选择合适的间隔?我的想法是首先创建一个数组,然后随机抽取0到100。我被困在这里了..。如何以顺序和随机的方式创建间隔?

EN

回答 2

Stack Overflow用户

发布于 2014-02-12 04:08:27

Choose 9 (without replacement) values介于0和100之间。对它们进行排序(如果您在我链接的线程中使用解决方案,它们将已经排序),并将它们用作您的区间边界。

编辑:如果允许范围为空,甚至不用担心唯一性;只需选取9个随机值,对它们进行排序,您就有了自己的区间边界。

票数 2
EN

Stack Overflow用户

发布于 2014-02-12 05:46:23

下面是此任务的Java实现:

代码语言:javascript
复制
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)));
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21711864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档