JavaScript中Math.random()生成随机数据详解
发布时间:2025-05-24 02:33:27 发布人:远客网络
一、JavaScript中Math.random()生成随机数据详解
Math.random()将生成一个介于0(包括)和1(不包括)之间的伪随机浮点数(带有小数的数),随机数并不意味着总是得到一个唯一的数字,它会在一段时间后产生相同的数字。这里的间隔很长,所以可能不会得到两次相同的数。
通过Math.random()返回0-1之间的随机数,生成随机布尔值。
同样利用通过Math.random()返回0-1之间的随机数的原理,结果乘以最大数并四舍五入即可获得一个介于0和max之间的数字。
进一步完善上面的方法以可以获取指定最小和最大范围的随机数。
为了生成这个需求,可以借助toString()方法,然后把随机数转换成字符串。
接下来分析一下原理,先来看toString()方法:
参数radix是介于2和36之间的数字。
Base36是一个二进制到文本编码表示方案的二进制数据以ASCII通过将其转化为一个字符串格式基数-36表示。选择36十分方便,因为可以使用阿拉伯数字0–9和拉丁字母A–Z[1](ISO基本拉丁字母)表示数字。
Math.random结果不包括1但包括0。这意味着randomID结果是空""的可能性很小,那是因为依赖序列的开头为0.,在这种情况下,可以简单地返回0或任何其他的值作为默认字符串id:
可以应用上面相同原理来创建一个随机的十六进制数函数(随机颜色),这里将使用ES7字符串填充函数:padEnd,如下代码:
如果不想使用ES7,可以改下以兼容其他版本:
二、一个JavaScript的Math.random()问题
这是因为JavaScript产生的随机数是个纯小数(大于等于0小于1的实数),但小数点后面的小数位数肯定不是固定16位的啊,比如 0.123是3位小数,0.987654321是9位小数。所以仅靠获取小数点后的数字就得到16位数的想法是不靠谱的。
正确的做法:第一种是把随机数乘以9再加1,就得到1到9.9999……的数字,再乘以10的15次方(也就是1后面15个0),最后取整,就得到1000……(1后面15个0,即最小的16位数)到9999……(16个9,即最大的16位数)之间的数字了:
returnparseInt((Math.random()*9+1)*Math.pow(10,15));
}
第二种是把16个1位数的随机整数拼在一起也就是16位数了:
第二种是把16个1位数的随机整数拼在一起也就是16位数了:
for(vars="",i=0;i<16;i++)s+=parseInt(Math.random()*10);
}
两种方法的区别在于,第一种产生的数字是纯的16位数(0不能作为开头),类型是数值,效率应该是较高的;第二种产生的数字则允许0开头,类型是字符串,效率相对差一些。
两种方法的区别在于,第一种产生的数字是纯的16位数(0不能作为开头),类型是数值,效率应该是较高的;第二种产生的数字则允许0开头,类型是字符串,效率相对差一些。
三、传奇脚本关于random的用法以及详细解释
1、说明:Random是一个随机标签,一般用于判定脚本里,#if的下面,当然这个标签也用在新爆率文件里。
2、格式:Random数值(数值与爆率文件里的数值机率类同)。
3、举例:Random 10(这就表示1/10的概率)。
4、脚本语言是比较多的,一般的脚本语言的执行只同具体的解释执行器有关,所以只要系统上有相应语言的解释程序就可以做到跨平台。
5、较为热门的脚本语言有Lua、JavaScript等,功能都比较强大,但也有明显的缺点,例如Lua实现面向对象比较麻烦,而JavaScript和C++相互调用非常困难。
6、脚本的编写都是采用某一种编程语言。如 LoadRunnert测试工具用的 C语言;WebLoadt测试工具用 JavaScript或者是接近编程语言的方式。
7、Robot测试工具用SQABasic,一种类似于VB的语言;QTPt测试工具所用到的是VBScript;WinRunnert测试工具所用到的是类 C的语言。
8、这些测试脚本的易读性相对较低,编写相对复杂,当设备的功能需求发生变化时,测试脚本不易被维护。
9、常见的脚本语言有:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,PHP,SQL,Perl,Shell,Python,Ruby,JavaFX,Lua,AutoIt等。