这是[0,100]之间的一组数字。如何创建一个包含10个任意范围的表来存储它们并选择适当的间隔? 我的想法是先创建一个数组并随机剪切0~100。我被困在这里....如何按顺序创建间隔但也随机?
答案 0 :(得分:2)
Choose 9 distinct (without replacement) values介于0和100之间。对它们进行排序(如果您使用我链接的线程中的解决方案,它们已经被排序),并将它们用作间隔边界。
编辑:如果允许范围为空,则不要担心唯一性;只需选择9个随机值,对它们进行排序,然后就可以得到区间边界。
答案 1 :(得分:0)
以下是此任务的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)));
}
}