菜鸟教程 -- 学的不仅是技术,更是梦想!

Javascript 教程
JavaScript 教程 JavaScript 简介 JavaScript 用法 JavaScript VScode JavaScript Chrome 中运行 JavaScript 输出 JavaScript 语法 JavaScript 语句 JavaScript 注释 JavaScript 变量 JavaScript 数据类型 JavaScript 对象 JavaScript 函数 JavaScript 作用域 JavaScript 事件 JavaScript 字符串 JavaScript 字符串模板 JavaScript 运算符 JavaScript 比较 JavaScript 条件语句 JavaScript switch 语句 JavaScript for 循环 JavaScript while 循环 JavaScript break 和 continue 语句 JavaScript typeof JavaScript 类型转换 JavaScript 正则表达式 JavaScript 错误 JavaScript 调试 JavaScript 变量提升 JavaScript 严格模式 JavaScript 使用误区 JavaScript 表单 JavaScript 表单验证 JavaScript 验证 API JavaScript 保留关键字 JavaScript this JavaScript let 和 const JavaScript JSON JavaScript void JavaScript 异步编程 JavaScript Promise JavaScript async/await JavaScript 代码规范 JavaScript 测验

JS 函数

JavaScript 函数定义 JavaScript 函数参数 JavaScript 函数调用 JavaScript 闭包

JS

JavaScript 类 JavaScript 类继承 JavaScript 静态方法

JS HTML DOM

DOM 简介 DOM HTML DOM CSS DOM 事件 DOM EventListener DOM 元素 HTMLCollection 对象 NodeList 对象

JS 高级教程

JavaScript 对象 JavaScript prototype JavaScript Number 对象 JavaScript String JavaScript Date(日期) JavaScript Array(数组) JavaScript Boolean(布尔) JavaScript Math(算数) JavaScript RegExp 对象

JS 浏览器BOM

JavaScript Window JavaScript Window Screen JavaScript Window Location JavaScript Window History JavaScript Navigator JavaScript 弹窗 JavaScript 计时事件 JavaScript Cookie

JS

JavaScript 库 JavaScript 测试 jQuery JavaScript 测试 Prototype

JS 实例

JavaScript 实例 JavaScript 对象实例 JavaScript 浏览器对象实例 JavaScript HTML DOM 实例 JavaScript 总结

JS 参考手册

JavaScript 对象 HTML DOM 对象 JavaScript 异步编程 JavaScript 静态方法
(追記) (追記ここまで)

JavaScript Math(算数) 对象


Math(算数)对象的作用是:执行常见的算数任务。


[画像:Examples]

在线实例

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);

注意: Math对象无需在使用这个对象之前对它进行定义。


算数值

JavaScript 提供 8 种可被 Math 对象访问的算数值:

你可以参考如下 Javascript 常量使用方法:

实例

Math.E
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));

上面的代码输出为:

AI 思考中...

6 篇笔记 写笔记

  1. #0

    学神之女

    whi***[email protected]

    104

    对于伪随机数,JS 有很多种玩法来生成我们所需要的伪随机数。

    根据上下限生成随机数:

    var rand = (min,max) => Math.round(Math.random()*(max-min))+min;
    //Max为最大值,Min为最小值

    根据概率随机生成 bool 值:

    function randBool(percent=0.5){
     //percent为概率,默认0.5(50%)。
     if(Math.random()<percent)//如果随机数小于概率值,返回true,否则返回false。
     return true;
     else
     return false;
    }

    随机生成指定字符:

    function randChar(length,characters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"){
     //length为所需长度,characters为所包含的所有字符,默认为字母+数字。
     characters=characters.split("");//分割字符。
     result="";//返回的结果。
     while(result.length<length) result+=characters[Math.round(Math.random()*characters.length) - 1];
     return result;
    }

    随机生成字符的另一种玩法:

    function randCharAnother(length,rangeMin=0x80,rangeMax=0x7FF){
     //length长度,rangeMin为最小Unicode码,rangeMax为最大Unicode码。
     result="";
     while(result.length<length) result+=String.fromCharCode(Math.round(Math.random()*(rangeMax-rangeMin))-rangeMin);
     return result;
    }

    随机从数组中取出一个东东:

    Array.prototype.pick = function(){
     //不能为 ()=>{/*函数*/},否则this会指向Window。
     return this.length?Math.round(Math.random()*(this.length-1)):undefined;//如果长度为0,返回undefined。
    }

    学神之女

    whi***[email protected]

    8年前 (2018年06月05日)
  2. #0

    进步啊少年

    690***[email protected]

    49

    首先感谢@学神之女 的分析和经验分享,在这里做一点小小的纠正,如果有误,希望读者提出。

    随机生成字符的另一种玩法。

    根据笔者的这段代码:

    var rand = (min,max) => Math.round(Math.random()*(max-min))+min;

    下面的这行代码:

    while(result.length<length) result+=String.fromCharCode(Math.round(Math.random()*(rangeMax-rangeMin))-rangeMin);

    应该修改为:

    while(result.length<length) result+=String.fromCharCode(Math.round(Math.random()*(rangeMax-rangeMin))+rangeMin);

    随机从数组中取出一个东东。

    return this.length?Math.round(Math.random()*(this.length-1)):undefined; // 如果长度为 0,返回 undefined

    修改为:

    return this[(this.length?Math.round(Math.random()*(this.length-1)):undefined)]; // 如果长度为 0,返回 undefined

    这样比较符合对象的一般调用方式。

    进步啊少年

    690***[email protected]

    7年前 (2019年05月20日)
  3. #0

    wildWolf

    479***[email protected]

    16

    受到楼上二位的启发,想到在 a 大于 b,且都是整数的情况下:[a , b] 或者 [a , b) 或者 (a, b] 或者(a, b) 之间的随机整数。其实都可以转化为 [a, b) 类型。

    现在从数学的角度给 出[a , b) 之间随机数的推导过程,或许有启发:

    0<= Math.random() <1 
    0<= Math.random() * (b-a) < b-a
    a <=Math.random() * (b-a) < b
    a<= Math.floor( Math.random() * (b-a)) < b
    Math.floor( Math.random() * (b-a)) -------就是[a, b) 之间的随机整数。

    wildWolf

    479***[email protected]

    7年前 (2019年11月24日)
  4. #0

    littledragonsdfs

    193***[email protected]

    18

    纠正一下三楼的推导过程:

    0 <= Math.random() <1
    0 <= Math.random()*(b-a) < b-a
    a <= Math.random()*(b-a)+a < b

    得出结论:Math.random()*(b-a)+a -----------才是[a,b] 之间的随机数。

    littledragonsdfs

    193***[email protected]

    6年前 (2020年03月16日)
  5. #0

    小柯柯来康康

    177***[email protected]

    20

    看到最后的同学写的结论,确实是三楼漏了个a

    正确的式子应该是Math.floor( Math.random() * (b-a)+a)

    但不应该是包含a和b的式子

    若要包含则应改为:Math.floor(Math.random() * (max - min + 1)) + min

    虽然这个1不知道怎么推导的,记住是对的就行。

    小柯柯来康康

    177***[email protected]

    6年前 (2020年04月19日)
  6. #0

    子辰

    191***[email protected]

    24

    规律是:

    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***[email protected]

    6年前 (2020年10月03日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /