这是jsbin的函数,它生成每个bin的标识短代码:
function shortcode() {
var vowels = 'aeiou',
consonants = 'bcdfghjklmnpqrstvwxyz',
word = '', length = 6, index = 0, set;
for (; index < length; index += 1) {
set = (index % 2 === 0) ? vowels : consonants;
word += set[Math.floor(Math.random() * set.length)];
}
return word;
}
它可以产生多少种不同的组合?如果我计算得好,当使用一组26个字母(a-z)中的6个字母时,有3.08915776e + 8个组合。但是如何计算,因为有5组(元音)和21组(辅音)交替产生可记忆的短代码,如'ecamit','izafij','erowih','avimog'等...
那会是(5x21)^ 3 = 121,550,625吗?
答案 0 :(得分:1)
最近更新了短代码方法,因为我们经常不断地重复访问重复项,事实上,您看到的代码版本也会在末尾附加数字以增加强制它们变得独一无二。
我相信变种的数量,仅基于此代码(上面的代码,而不是jsbin的生产代码库中的内容)是:1,157,625(5 * 21 * 5 * 21 * 5 * 21 ) - 这真的不多。
这个简单的方法来自我的旧密码生成器:http://remysharp.com/2008/04/14/pronounceablely-random/ - 但最近我不得不在jsbin的生产中更改它。
它现在不断在数据库的每个正面点击上添加字符,但字母也以大写形式重复,因此现在url组合的范围要高得多。