Immagina di avere una raccolta di istanze di oggetti che rappresentano attività che un utente può intraprendere. A seconda degli attributi dell'utente, devo selezionare casualmente le istanze per presentare attività all'utente.
Per alcuni utenti, ho bisogno di presentare più attività di quante siano le attività disponibili, nel qual caso, voglio usare il seguente algoritmo.
Se tutte le attività disponibili sono già state presentate all'utente, quindi selezionare nuovamente un'attività "utilizzata", selezionando la prima attività presentata ordinata per frequenza di utilizzo. In altre parole, cerca di ridurre la ripetizione e in cui la ripetizione è inevitabile, usa le istanze che sono state ripetute meno spesso e che sono state presentate più indietro nel tempo.
Prima di passare a codificare quell'algoritmo, mi sono chiesto se è possibile riutilizzare qualche schema esistente?
[EDIT] "Il più indietro nel tempo" non è rilevante poiché passerò all'algoritmo una raccolta ordinata di istanze utilizzate in cui la prima voce è la prima presentata.