Je verrais un truc basique du genre :
- Une table avec la structure suivante :
date, log1, log2, log3, log4, etc. (autant de "log" que ta sélection du jour contient de logiciels)
- Lorsque tu affiches la liste du jour : select dans cette table en recherchant la date du jour. Si pas de ligne, création de la ligne avec une sélection "order by rand()". Puis re-sélection dans la table
=> Ainsi, tu fais le tirage une seule fois par jour, et tu gardes l'historique