Просмотров: 7 320

Как генерировать строку из случайных чисел и букв на Javascript.

При разработке своих приложений, возможно, вам может понадобится сгенерировать строку из случайных букв и цифр.

Например, недавно я создавал страницу, на которой нужно было генерировать пароль пользователя при клике по ссылке.

Вот живой пример, как это работает. Понажимайте на кнопку «Генерировать».

Хочу поделиться кодом, который может вам помочь решить эту задачу на Javascript.

function str_rand() {
        var result       = '';
        var words        = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
        var max_position = words.length - 1;
            for( i = 0; i < 5; ++i ) {
                position = Math.floor ( Math.random() * max_position );
                result = result + words.substring(position, position + 1);
            }
        return result;
    }
$("#gen").click(function() {
        $("#short_link").val(str_rand());       
});

Имеем две функции:

1) str_rand

Эта функция генерирует случайное число из символов, которые определены в переменной words.

Чтобы изменить количество символов, которые будут генерироваться, нужно изменить цифру 5 в этом выражении:

for( i = 0; i < 5; ++i )

На то количество символов, которые вам будут необходимы.

2) $(«#gen»).click(function() { …

При клике на элемент с «id» gen, в элемент с id short_link будет вставлено случайное выражение, которое генерировалось функцией str_rand.

В общем, это все. Используйте этот код в своих приложениях и экономьте свое время.

Кстати, если вам будет интересно, я занимаюсь веб-аналитикой сайтов. Если вы хотели бы сделать ваш сайт более эффективным и, чтобы он приносил больше денег, веб-аналитика может в этом помочь.

Обучающий курс для начинающих по основам работы с веб-аналитикой сайтов на системе Яндекс Метрика здесь.

Страница с описанием моих услуг по веб-аналитике: здесь.

  • Александр

    Спасибо за полезную функцию. Я ее немного доработал — чуть оптимизировал и добавил возможность указывать количество символов в генерируемой строке.

    function getRandomString(charsCount) {
    var words = ‘0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM’,
    max_position = words.length — 1,
    position,
    result = »;

    if (!(+charsCount)) {
    return result;
    }

    for (var i = 0; i < charsCount; i++) {
    position = Math.floor(Math.random() * max_position);
    result += words[position];
    }

    return result;
    }

  • Максим

    Подразумевает ли этот код повторение символов?

    • http://vk.com/id18397417 Дмитрий Ченгаев

      Символы могут повторяться, если случайным образом это так получилось. Но, как правило, вероятность такого повтора низка.

  • http://vk.com/id365846695 Владислав Старжинський

    Спасибо наконец я нашол то что искал)))))) Просто я разробативаю сайт (генератор стим ключей) и нашол то что нужно, а можно еще такой вопрос, как сделать так чтобы каждие 5 заглавных символов были через тире вот пример XXXXX
    -XXXXX-XXXXX

  • Kman

    Последний символ в words не выпадает.

  • https://plus.google.com/111995082550789311809 Стас Валов

    Спасибо! Нашел то что нужно! Только вот вопрос: почему ссылка может не работать Генерировать при нажатии просто добавляется # в строке браузера

  • Falbin

    В данном примере буква ‘M’ никогда не выпадет. Чтобы скрипт отрабатывал корректно надо или округление поменять с floor на round, или в строке
    var max_position = words.length — 1;
    убрать -1

  • Falbin

    И потом почему у вас тут переменные i и position глобальные, почему вы не написали var?