0

我有一组(选择)随机生成的数字。例如:

13 14 9 10 14 10 10 11 16 9 9 12 10 10 15 16 12 10 13 12 11 13 14 17 12 11 9 15 13 9 16 14 12 10 10 11 11 14 11 15 12 13 12 2 8 1416 14 9 10 15 8 12 15 13 14 18 12 7 11 11 15 14 17 9 9 10 15 11 13 12 18 14 10 14 10 15 15 13 7 15 12 11 12 14 10 9 12 12 5 14 9 1 16 1 5 14 9 1

我的意思是,这些数字似乎不是在 -100 到 10000 的范围内生成的。正确的答案是限制是从 5 到 20。如何定义选择的范围(最低限制和最高限制)?我觉得我必须使用Expected valueVariance以某种方式使用,但不知道如何使用。

再举一个例子:

35 16 19 21 20 34 24 24 24 24 24 24 24 16 33 35 23 19 20 19 30 29 25 21 34 14 20 34 16 24 27 12 27 12 21 20 21 20 25 17 21 32 21 32 21 17 19 20 30 21 22 21 9 14 24 24 24 24 18 23 24 26 20 13 22 32 21 20 29 21 25 24 18 25 27 28 28 26 13 13 17 28 26 26 30 21 18 21 18 23 29 28 28 28 28 28 26 17 28 25 19 22 16 25 33 26 25 33 22 20 24 24 24 27 32 22 22 21 27

答:所有这些数字都是从 5 - 40 范围内生成的

4

2 回答 2

1

您可以将数字序列加载到SortedSet, egTreeSet中,然后利用它具有的 min 和 max 函数:

TreeSet<Integer> ts = new TreeSet<>();
// add your data using ts.add()
System.out.println("lower bound is " + ts.first());
System.out.println("upper bound is " + ts.last());
于 2016-09-02T13:06:04.367 回答
0

你问的是不可能的。您找不到用于生成均匀分布的数字系列的界限。

证明这一点的一种简单方法是使用各种界限计算生成给定数字序列的概率。

min是系列中找到的最小数字,max,最大值,和len,系列的长度。我们想分别找到用于生成序列的下限和上限lowupp(l, u)是生成下界等于l且上界等于的系列的概率u

对于任何l > min, p(l, u) = 0. 同样,对于任何u < max, p(l, u) = 0

对于l <= minu >= max,p(l, u) = (1/(u-l))^len因为每个数字都是以 的概率生成的1/(u-l)。现在,我们想要最大化p,这意味着我们想要找到lowandup这样,对于任何land up(low, up) >= p(l, u)

这很容易:如果f(x) = (1/x)^y,x > 0和, 则以尽可能小的值实现y > 1的最大值。fx

在我们的问题中x = up-low,所以我们想要最小化up-low,这与最小化up和最大化相同low

这导致了解决方案:up = maxlow = min

如果使用的实际界限不是找到的极值,那么猜测真实界限是不可能的。

于 2016-09-02T14:01:34.197 回答