Для того, что вы здесь делаете, будет гораздо дороже, чем необходимо, сгенерировать все возможные строки, а затем выбрать одну случайным образом. Если вы сделаете это таким образом, вам придется сгенерировать 17 576 (26 ^ 3) строк, только для одной случайной трехбуквенной строки. Вместо этого вы можете просто генерировать одну случайную строку, по одному символу за раз.
var alphabet = [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ];
function generateRandomString(strLength) {
var output = "";
for (var i = 0; i < strLength; i++) {
var randomIndex = Math.floor(Math.random() * alphabet.length);
output += alphabet[randomIndex];
}
return output;
}
function getSession() {
var randomDiv = document.getElementById("randomStrings");
newText = generateRandomString(3);
randomDiv.innerHTML = newText;
}
Это решение также лучше масштабируется. Чтобы сгенерировать все возможные строки и выбрать одну, ваша среда выполнения будет O(26^n)
, где n - количество символов в строке. Время выполнения этого решения (построение строки символ за символом) равно O(n)
, где n - количество символов в строке.
Это означает, что если вы решите, что вам нужно больше идентификаторов сеансов (если больше пользователей используют ваше приложение), вы можете сделать это легко. Пятисимвольный идентификатор сеанса занял бы 11 881 376 итераций, если бы вы заранее создали все возможности. Для создания одной возможности на лету потребуется 5 итераций.