I'd like to select an element of a list where each element is weight by how long since it was last selected.
I could make an LRU (least recently used) list with the weighting a function based on the position in the queue, which would be elegant except for the fact that initially all elements should be weighted equally.
Just subtracting or dividing the weight by a certain amount after it has been selected doesn't seem intuitively right. Is there a better way perhaps using a mathematical concept such as logarithms or inverses? (not my strong point)