algorithm - 幻灯片算法

标签 algorithm slideshow

我需要为不断接收新图像的照片幻灯片设计一种算法,以便最旧的图片在演示文稿中出现的次数减少,直到旧照片和已出现的照片之间达到平衡。

我认为每张图片都可以有一个计数器,记录它们被显示的次数,并优先考虑那些在该变量中具有最低值的图片。

任何其他想法或解决方案都会受到欢迎。

最佳答案

您可以获得整体近乎均匀的分布(从长远来看,每个图像出现的次数大致相同),但我不建议这样做。早期可用的图像在以后很少出现。更好的用户体验是在每个步骤中从所有可用图像中简单地选择一个随机图像。

如果从长远来看您仍希望接近均匀分布,则应根据图像到目前为止出现的次数来设置任何图像的概率。例如:

p(i) = 1 - count(i)/(max_count() + epsilon)

下面是一个模拟此类过程的简单 R 代码。在新图像可用之前,随机选择了 37 张图像。这个过程重复 3000 次:

h    <- 3000              # total images
eps  <- 0.001

t    <- integer(length=h) # t[i]: no. of instances of value i in r
r    <- c()               # proceded vector of indexes of images 
m    <- 0                 # highest number of appearances for an image

for (i in 1:h)
    for (j in 1:37)                                   # select 37 random images in range 1..i
    {
        v    <- sample(1:i, 1, prob=1-t[1:i]/(m+eps)) # select image i with weight 1-t[i]/(m+eps)
        r    <- c(r, v)                               # add to output vector

        t[v] <- t[v]+1                                # update appearances count
        m    <- max(m, t[v])                          # update highest number of appearances
    }

plot(table(r))

输出图显示每张图片出现的次数:

epsilon = 0.001:

epsilon = 0.001

epsilon = 0.0001:

epsilon = 0.0001

例如,如果我们查看输出向量中的索引,比如选择了图像 #3:

> which(r==3)
 [1]    75    76    77    78    79    80    81    82    83    84    85    86    87    88    89    90    91    92    93    94
[21]    95    96    97    98    99   100   101   102   103   104   105   106   107   108   109   110   111  1189 34767 39377
[41] 70259

请注意,如果 epsilon 非常小,则序列看起来不那么随机(较新的图像更受欢迎)。然而,从长远来看,任何 epsilon 都可以。

关于algorithm - 幻灯片算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750974/

相关文章:

javascript - 计算每次使用的价格

java - 如何在大数字串中找到重复的数字子序列?

javascript - 一页上有多张幻灯片

javascript - 用JS随机改变几个div的背景图片

java - 使用 servlet 进行幻灯片放映

algorithm - 用零标记所有列和行

java - 错误 : the method sort (Comparable []) in the type Selection is not applicable for the arguments (int[])

c - 如何改进我的算法来检测对应于相同分数的数组元素?

javascript - 网络幻灯片自动化

javascript - 更改为另一张图片时如何固定图片大小?