【问题标题】:Calculate number of elements to be evaluated计算要评估的元素数
【发布时间】:2014-03-12 10:07:22
【问题描述】:

这是一个逻辑问题,不受任何特定语言的约束。

有人知道如何实现以下目标吗?

我确实有一个数组,我总是可以评估最多 10 个元素。 因此,如果数组的大小超过 10,我需要确定我可以评估哪个元素 - 均匀分布

例子:

[87, 34, 65, 23, 98, 45, 21强>、54、65235、4、32、98、4217]

可能会考虑粗体。

而且我确实希望始终评估尽可能多的可能性:

如果数组的长度小于 10,那么评估每个项目。 如果长度更高,则评估数组中的 10 个。

如果长度为 20 -> 应评估每 2 项

如果长度为 100 -> 每 10 项应评估一次

但是如果长度是 13 或 27 呢?

【问题讨论】:

  • 你所说的“均匀分布”到底是什么意思?
  • 分布应该是均匀的,这应该由示例中突出显示的部分显示。只取前 10 个是不对的。
  • 这仍然是一个非常模糊的描述-也许您可以为i的不同值提供一些示例?

标签: arrays math logic


【解决方案1】:

您可以使用将索引 0..9 重新映射为均匀分布的索引形式 0..n-1 的函数,例如

int map_index(int i,  // index: 0..9
              int n)  // no of elements in array
{
    return i * (n - 1) / (10 - 1);
}

【讨论】:

  • 有效,但返回值需要仔细四舍五入。谢谢。
【解决方案2】:

如何使用具有索引 floor(k*length/10) 的那些,其中 k=1, 2, ... 10? 对于长度 15,这将导致索引 1、3、4、6、7、9、10、12、13、15 - 几乎与您的示例匹配。

【讨论】:

    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 2019-10-22
    • 2013-12-25
    • 2021-07-07
    • 1970-01-01
    • 2016-04-29
    • 2021-07-08
    • 1970-01-01
    相关资源
    最近更新 更多