Генерировать случайную шестизначную строку в базе 32?

#javascript

#javascript

Вопрос:

Как следует из названия: я хотел бы сгенерировать случайную шестизначную строку в базе 32 Крокфорда в JavaScript.

В настоящее время я генерирую случайное шестизначное число, используя это:

 function genRandNum() {
    return Math.floor(Math.random() * 900000)   100000;
}
 

Но база 32 была бы круче!

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

Комментарии:

1. Вы действительно пытались создать getRandStr() функцию, используя base 32 метод Крокфорда?

2. Нет — не домашнее задание! И я не хочу лениться, просто хотел посоветоваться, как лучше всего подойти к этому 🙂 @Javed если вы считаете, что это лучший способ сделать это, тогда я напишу это и опубликую в качестве ответа — дайте мне знать.

Ответ №1:

Number.toString(32) вернет 32-разрядное представление числа. Это не 32-разрядное представление Крокфорда (оно используется 0123456789abcdefghijklmonpqrstuv вместо 0123456789abcdefghjkmnpqrstvwxyz Crockford ), но его можно очень легко изменить, поскольку число в любом случае случайное:

 var key = {
    'i': 'w',
    'l': 'x',
    'o': 'y',
    'u': 'z'
};
var randomInt = Math.floor(Math.random()*1e9);
alert(randomInt.toString(32).replace(/[ilou]/, function (a) { 
    return key[a]; 
}));