Создайте new map или лучше new set объект, добавляйте туда сгенерированный значения пока десять не наберётся. Перед добавлением проверяйте нет ли такого внутри, иначе заново генерировать. Это буквально цикл while set.size < 10.
Отдельная html это отдельная страница на сервере, сгенерировать в реальном времени из скрипта, несколько я знаю, не выйдет. Можете записать сгенерированные значения в куки, сессию или локалсторэдж, думаю куки подходящее и самое стабильное. После перехода на эту заранее подготовленную страницу, считываете свои знания и выводите их пользователю или если их нет, пишете что тут используются куки, пусть включают.
Насчёт самой генерации, просто рандомные элементы массива с символами или по кодам символов, в интернете много вариантов есть.