На основе crypto.getRandomValues — настоящая случайность, не Math.random.
Надёжный пароль нужной длины и сложности.
Получите одно или несколько чисел из выбранного диапазона.