我现在使用Math.random()
,它会返回一些像0.7183306051883847
这样的数字。
这个功能有一些不好的方面:
0.
开头
无法设置数字的符号长度
没有为字母添加字母的选项
我想知道,生成字符串的最短代码是什么(例如预期字符长度为6)?
2en81u
39438s
ldksfn
感谢。
答案 0 :(得分:4)
这应该是最短的。如果您需要大写,请在尾部添加额外的.toUpperCase()
电话。
Math.random().toString(36).substring(3,9)
<强>更新强>
这个版本有点长,但它确实避免了某些特殊有理数可能没有足够长度的问题。
(+new Date * Math.random()).toString(36).substring(0,6)
答案 1 :(得分:1)
btoa
完成这项工作,但不是特别好:
> btoa(Math.random())
"MC43MzU0MzQ4NTk5OTEwNzM2"
> btoa(Math.random())
"MC44MTk2NzE0OTIzMjUxNDI="
> btoa(Math.random())
"MC41NDgwMzgxMzMxODcyMTk1"
> btoa(Math.random())
"MC4wNTk4NDc1NDIzMTc1ODQxNg=="
> btoa(Math.random())
"MC41NjA1NzYxNTEzNTc5NjM3"
> btoa(Math.random())
"MC4xMTA5MzY5ODY5ODA5NTk3Nw=="
> btoa(Math.random())
"MC42NDgwNzM5NjY2MTQ5MDI="
> btoa(Math.random())
"MC4zMTkzNTM2OTQzMjkwMzgyNg=="
> btoa(Math.random())
"MC4yOTU2OTgyOTE4NTQ5MzI5"
> btoa(Math.random())
"MC44ODc3MDEzNjQ0NjY5MjA1"
请注意它们都以MC4
开头,因为Math.random().toString()
始终以0.
开头
答案 2 :(得分:1)
function randomString() {
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var string_length = 8;
var randomstring = '';
for (var i = 0; i < string_length; i++) {
var rnum = Math.floor(Math.random() * chars.length);
randomstring += chars[rnum];
}
return randomstring;
}
答案 3 :(得分:0)
获取将转换为随机字符串的整数数组,如下所示:
var myAscii = [],
someAscii;
for (var i = 0; i < 5; i +=1) {
someAscii = Math.floor(Math.random() * (90 - 65)) + 65; // This gives you a random number between 65 and 90, which is the upper case A-Z. Adapt it to your stuff.
myAscii.push(someAscii);
}
var randomString = String.fromCharCode.apply(someAscii);
无论如何,如相关答案所提出的,获取包含所有所需字符的字符串并执行随机提取是一种更简单的方法。