Не указано какие буквы, учитывается ли верхний и нижний регистр букв.
Какие цифры римские или арабские.
Какие символы ,только спец символы ... или ещё какие.
Создать файл в блокноте : ваше название.HTML
Скопировать этот код и наслаждайтесь.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Рандомайзер </title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
.result {
margin-top: 20px;
font-size: 1.2em;
font-weight: bold;
}
</style>
</head>
<body>
<h1>Генератор паролей </h1>
<button onclick="generateCipher()">Сгенерировать шифр</button>
<div class="result" id="cipherResult"></div>
<script>
function generateCipher() {
const letters = 'abcdefghijklmnopqrstuvwxyz';
const digits = '0123456789';
const symbols = '!@#$%^&*()-_=+[]{}|;:,.<>?';
const selectedLetters = selectUniqueCharacters(letters, 5);
const selectedDigits = selectUniqueCharacters(digits, 3);
const selectedSymbols = selectUniqueCharacters(symbols, 5);
let cipher = selectedLetters + selectedDigits + selectedSymbols;
cipher = shuffle(cipher);
document.getElementById('cipherResult').textContent = cipher;
}
function selectUniqueCharacters(source, count) {
const selected = new Set();
while (selected.size < count) {
const randomIndex = Math.floor(Math.random() * source.length);
selected.add(source[randomIndex]);
}
return Array.from(selected).join('');
}
function shuffle(string) {
const array = string.split('');
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array.join('');
}
</script>
</body>
</html>
А можно ещё и так например: