【问题标题】:How to find limits of selection based on (using) selected random numbers?如何根据(使用)选定的随机数找到选择限制?
【发布时间】:2017-01-10 14:41:14
【问题描述】:

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

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 16 13 12 8 16 13 12 8 1 14 12 12 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 25 10 9 13 12 16 18 14 14 13

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

再举一个例子:

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

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

【问题讨论】:

  • 我不确定你的问题是什么。您是否试图通过查看随机生成的数字来找到生成过程的界限?
  • 你是在问'假设我知道这些整数是由randomInt(lowerBound, upperBound) 生成的,我如何确定lowerBoundupperBound 是什么?'?
  • 如果您对值的生成方式做出一些假设,例如样本数量大于分布范围的均匀分布,您可以获得关于真实上限和下界是。有了这两个假设,样本的界限很可能就是分布的界限。
  • 你最好在stats.stackexchange.com上问这个问题有很多方法(MLE、贝叶斯和order statistics
  • 如果您特别提到离散均匀分布,那么您的问题也与German tank problem密切相关

标签: java algorithm math statistics probability-theory


【解决方案1】:

您可以将您的数字序列加载到SortedSet,例如TreeSet,然后利用它的 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());

【讨论】:

  • 我不认为这是他要问的。我相信他正在寻找一种方法来推断用于生成随机数的限制,而不是生成的范围。
  • @bradimus 让我们看看 OP 怎么说。无论如何,我认为他必须至少触摸他集合中的每个元素一次。
  • 不,我不是在寻找 MIN 和 MAX。顺便说一句,我使用Collections.max(b) 完成的任务是找到界限。我在问题中又添加了一个例子。您可以看到所有元素都是在 5-40 范围内生成的,尽管 MIN=9 和 MAX=35
  • 您要计算什么统计范围?
  • @Nelxost 或者至少随着生成的点数变得任意大,边界会趋于极值。
【解决方案2】:

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

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

min 为系列中找到的最小值,max 为最大值,len 为系列的长度。我们想找到lowup,分别是用于生成系列的下限和上限。设p(l, u) 是生成下限等于l 和上限等于u 的系列的概率。

对于任何l &gt; minp(l, u) = 0。同样,对于任何u &lt; maxp(l, u) = 0

对于l &lt;= minu &gt;= maxp(l, u) = (1/(u-l))^len,因为每个数字的生成概率为1/(u-l)。现在,我们想要最大化p,这意味着我们想要找到lowup,这样,对于任何lup(low, up) &gt;= p(l, u)

这很简单:如果f(x) = (1/x)^yx &gt; 0y &gt; 1,那么对于最小的x 可能达到f 的最大值。

在我们的问题中,x = up-low,因此我们希望最小化up-low,这与最小化up 和最大化low 相同。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多