Назначьте каждому пользователю временный случайный идентификатор. Вы можете сохранить идентификатор в файле cookie или компоненте в URL. Если вы используете форму, вы можете сохранить ее в скрытом поле формы. Поэтому, когда пользователь переходит со страницы на страницу, идентификатор остается неизменным.
Затем вы можете сохранить в базе данных изображения, которые пользователь уже оценил. Если вы случайно генерируете изображение, которое они уже видели, просто сгенерируйте новое.
Единственная проблема в том, что это становится болезненным, когда пользователь видит значительную часть изображений. Для этого есть несколько решений, но самое простое, вероятно, это просто очистить записи для пользователя и позволить им начать все сначала.
Вы можете избежать отдельных записей, просто выполнив поиск, если этот идентификатор уже предоставил оценку для этого изображения.