JavaScript Math(算数) 对象
Math(算数)对象的作用是:执行常见的算数任务。
在线实例
round()
如何使用 round()。
random()
如何使用 random() 来返回 0 到 1 之间的随机数。
max()
如何使用 max() 来返回两个给定的数中的较大的数。(在 ECMASCript v3 之前,该方法只有两个参数。)
min()
如何使用 min() 来返回两个给定的数中的较小的数。(在 ECMASCript v3 之前,该方法只有两个参数。)
完整的 Math 对象参考手册
我们提供 JavaScript Math 对象的参考手册,其中包括所有可用于算术对象的属性和方法。
该手册包含了对每个属性和方法的详细描述以及相关实例。
Math 对象
Math(算数)对象的作用是:执行普通的算数任务。
Math 对象提供多种算数值类型和函数。无需在使用这个对象之前对它进行定义。
使用 Math 的属性/方法的语法:
实例
var x=Math.PI;
var y=Math.sqrt(16);
var y=Math.sqrt(16);
注意: Math对象无需在使用这个对象之前对它进行定义。
算数值
JavaScript 提供 8 种可被 Math 对象访问的算数值:
你可以参考如下 Javascript 常量使用方法:
实例
Math.E
Math.PI
Math.SQRT2
Math.SQRT1_2
Math.LN2
Math.LN10
Math.LOG2E
Math.LOG10E
Math.PI
Math.SQRT2
Math.SQRT1_2
Math.LN2
Math.LN10
Math.LOG2E
Math.LOG10E
算数方法
除了可被 Math 对象访问的算数值以外,还有几个函数(方法)可以使用。
下面的例子使用了 Math 对象的 round 方法对一个数进行四舍五入。
document.write(Math.round(4.7));
上面的代码输出为:
5
下面的例子使用了 Math 对象的 random() 方法来返回一个介于 0 和 1 之间的随机数:
document.write(Math.random());
上面的代码输出为:
下面的例子使用了 Math 对象的 floor() 方法和 random() 来返回一个介于 0 和 11 之间的随机数:
document.write(Math.floor(Math.random()*11));
上面的代码输出为:
学神之女
whi***08@outlook.com
对于伪随机数,JS 有很多种玩法来生成我们所需要的伪随机数。
根据上下限生成随机数:
根据概率随机生成 bool 值:
随机生成指定字符:
随机生成字符的另一种玩法:
随机从数组中取出一个东东:
学神之女
whi***08@outlook.com
进步啊少年
690***159@qq.com
首先感谢@学神之女的分析和经验分享,在这里做一点小小的纠正,如果有误,希望读者提出。
随机生成字符的另一种玩法。
根据笔者的这段代码:
下面的这行代码:
应该修改为:
随机从数组中取出一个东东。
修改为:
这样比较符合对象的一般调用方式。
进步啊少年
690***159@qq.com
wildWolf
479***20@qq.com
受到楼上二位的启发,想到在 a 大于 b,且都是整数的情况下:[a , b] 或者 [a , b) 或者 (a, b] 或者(a, b) 之间的随机整数。其实都可以转化为 [a, b) 类型。
现在从数学的角度给 出[a , b) 之间随机数的推导过程,或许有启发:
wildWolf
479***20@qq.com
littledragonsdfs
193***2769@qq.com
纠正一下三楼的推导过程:
得出结论:Math.random()*(b-a)+a -----------才是[a,b] 之间的随机数。
littledragonsdfs
193***2769@qq.com
小柯柯来康康
177***0972@qq.com
看到最后的同学写的结论,确实是三楼漏了个a
正确的式子应该是Math.floor( Math.random() * (b-a)+a)
但不应该是包含a和b的式子
若要包含则应改为:Math.floor(Math.random() * (max - min + 1)) + min
虽然这个1不知道怎么推导的,记住是对的就行。
小柯柯来康康
177***0972@qq.com
子辰
191***4758@qq.com
规律是:
1. [a, b) => Math.floor(Math.random()*(b-a)+a);
2. 要想找到 [a, b],我们可以先找 [a, b+1),这两个区间是等效的
3. 那么,我们就可以根据1的规律来找到 [a, b]
4. Math.floor(Math.random() * (b+1 - a) + a);
子辰
191***4758@qq.com