图像加载器加权算法

时间:2012-02-20 10:50:30

标签: algorithm math distribution formula

我正在构建一个图像预加载器,并且我正在尝试创建一个加权函数来确定下一个要加载的图像。

以下是我的需求的快速细分:

我按顺序排列了一系列图像。我有一个可变权重,其值必须介于-1和1之间。

  • 加权值-1表示仅加载索引低于先前加载图像的图像。

  • 加权值为1表示只加载索引大于先前加载图像的图像。

  • 权重为0表示均匀分配图像加载。

  • 十进制加权,例如(0.6)表示在60%的时间内加载索引大于前一图像的图像,并且在40%的时间内加载较低的图像。

加权始终从0开始。每次更新的权重都包含要查看的新图像的索引以及上次查看图像的索引。

我希望在考虑以下情况下修改每个图像视图的权重:

  • 新索引是否大于旧索引(用户具有 前进)

  • 指定指数以下的图像数量与上面的数字相比。

  • 之前的加权(分布向标尺的一端倾斜越大,加权向该端增加的越慢,向另一端递增的越大)。

我希望我能够清楚地解决问题。有谁知道有助于提供此功能的算法或公式?

感谢。

1 个答案:

答案 0 :(得分:0)

我开始这么想:

function weighting(not_yet_preloaded_indices_array, 
                   current_index,
                   previous_index,
                   previous_weighting) {
    count_of_all = not_yet_preloaded_indices_array.length()
    count_of_next = count_bigger(not_yet_preloaded_indices_array, current_index)
    count_of_previous = count_of_all - count_of_next

     if (count_of_previous = 0) {
        return 1
    } else if (count_of_next = 0) {
        return -1
    }

    if (current_index >= previous_index) {
        direction = 1
        modifier = count_of_next / count_of_all
    } else {
        direction = -1
        modifier = count_of_previous / count_of_all
    }

    return (previous_weighting + direction * modifier) / 2
}

但我怀疑加权对用户的好处不仅仅是简单的预加载,例如:

1. preload 1 next image  (if not already preloaded)
2. preload 1 previous image  (if not already preloaded)
3. preload 5 or 10 next images  (only the ones not already preloaded)

其中next是所选方向(更大或更小的索引)