所有随机的东西都要用到随机数,js中是用到Math.random()这个方法,获取0~1之间的数。
1、Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值,是Java语言常用代码。例如:double a=Math.random()*(3-1)+1,设置一个随机1到3的变量。
2、生成一个4位的随机字符串代码如下:
public static void main(String[]args){String result=""
for(inti=0i<4i++){
//生成97-122的int型的整型
int intValue=(int)(Math.random()*26+97)
//将intValue强制转化成char类型后接到result后面
result=result+(char)intValue
}
//输出字符串
System.out.println(result)
}
通过 Math.random() 生成随机小数[0, 1),使用 toString(36) 转化为36进制的字符串,substring切割掉前面的 0. 。存在问题:当为0时会返回空字符串。最多生成10位字符串,而字符串化时会删除尾随零,所以实际字符串长度不定
stackoverflow
只生成16进制的字符串,低版本浏览器不支持
Crypto
//产生随机标识符 前面以四个字母开头长度为n1+n2的字符串
function getUuid() {
var s = []
var s1 = []
var hexDigits1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
var hexDigits1length = hexDigits1.length
var hexDigits2 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
var hexDigits2length = hexDigits2.length
var n1 = 4//随机前端字母字符串长度
var n2 = 32//随机后端数字字母字符串长度
for(var i = 0i <n1i++) {
s[i] = hexDigits1.substr(Math.floor(Math.random() * (hexDigits1length - 1)), 1)
}
for(var i = 0i <n2i++) {
s1[i] = hexDigits2.substr(Math.floor(Math.random() * (hexDigits2length - 1)), 1)
}
////数组合并 a.push.apply(a,b)//将b合并到a中
s.push.apply(s, s1)//将s1合并到s中
//第3个位置插入-
s[2] = "-"
//第4个字符之后插入最多3个-
for(var i = 0i <3i++) {
s[Math.floor(Math.random() * (n1 + n2 - 5)) + 4] = "-"
}
let uuid = s.join("")
return uuid
}