您当前的位置:首页 > 互联网教程

JavaScript中Math.random()生成随机数据详解

发布时间:2025-05-24 02:33:27    发布人:远客网络

JavaScript中Math.random()生成随机数据详解

一、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等。