马黑黑 发表于 2022-11-15 08:57

JS随机数基础

JS的数学对象,Math,拥有30多个方法,其中有一个方法是获取随机数的,即:
    Math.random()


Math 作为对象,头一个字母必须大写。它的方法(还有属性)用 . 引出,方法名称后面还需要一对小角括号 () 。下例,变量 num 将返回一个随机浮点数:

    let num = Math.random(); // → 0.9676556562786631,0.019366373057749575

变量 num 得到的值将是不确定的,但有范围,从 0 开始(包含 0 ),到 1 止(不包含 1,也就是 num 永远小于 1)。num 值范围可以表示为:

    0 ≤ num < 1

浮点数有时候我们不能直接使用,例如,当我们需要随机获取特定数组的下标,只能使用整数。Math 为我们提供了足够的方法:

    Math.ceil() - 向上取整 (例:Math.ceil(7.001);// → 8)
    Math.floor() - 向下取整 (例:Math.floor(7.999); // → 7)
    Math.round - 四舍五入 (例:Math.round(7.001); //→ 7 ,Math.round(7.999); // → 8)

利用以上方法,配合 Math.random() ,我们将得到我们所需要的整数,当然我们需要设计相应的算式。

例如,我们想得到 0~1 之间的整数:

    num = Math.round(Math.random());

num 的值不是 0 就是 1 ,因为 round() 方法用四舍五入的方式处理 Math.random() 所得的值,而该值要么大于、要么小于 0.5 。

那如果我们的预期是获得从 0 到 20 的整数、包含 0 和 20,又该怎么做?这个简单,将上面的示例改进一下便可:

    num = Math.round(Math.random() * 20);

上面的语句,Math.random() * 20 得到的值是浮点数,其值范围,根据前述的原理,将从 0.0 到 19.999... 之间;而 Math.round() 对其四舍五入后,得到的结果自然是从 0 到 20 之间,包含我们所限定的头尾边界数 0 和 20 。

实际应用中,我们还可以灵活使用另外的两个方法,可以将 Math.ceil() 和 Math.floor() 加入到算式中(当然,它们,连同 Math.round(),亦可以单独使用),达到用最简单有效的方式实现我们预设的目的。算式的设计,应高度结合实际的应用需求与场景特性。

作为入门介绍,本帖点到为止。感谢阅读!

红影 发表于 2022-11-15 09:51

这个帖子太好了,本来对这一串代码总感觉迷糊,看了这个帖子,清楚多了。谢谢黑黑{:4_187:}

红影 发表于 2022-11-15 10:01

Math.random()是0到1的随机浮点数,用它去乘以任何数字,就得到了0到不包含这个数字的随机浮点数,若再用四舍五入取整,就得到了0到这个数字的随机整数。总算整明白这个用法了{:4_173:}{:4_187:}

红影 发表于 2022-11-15 10:02

黑黑多讲点基础的东东,这些讲解真的太好了{:4_199:}

马黑黑 发表于 2022-11-15 11:25

红影 发表于 2022-11-15 10:02
黑黑多讲点基础的东东,这些讲解真的太好了

是很基础的东东

马黑黑 发表于 2022-11-15 11:29

红影 发表于 2022-11-15 09:51
这个帖子太好了,本来对这一串代码总感觉迷糊,看了这个帖子,清楚多了。谢谢黑黑

JS的实际应用,看似云里雾里,其实它就像代数,不同的小式子组合、嵌套,有时理不清。不过,一层一层剥开后,一切都能明了。

像 Math.random() 得到 0 - 0.999... 的浮点数,Math.round(浮点数) 则通过四舍五入得到 浮点数 的整数,两个套起来就是:

Math.round(Math.random())

马黑黑 发表于 2022-11-15 11:30

红影 发表于 2022-11-15 10:01
Math.random()是0到1的随机浮点数,用它去乘以任何数字,就得到了0到不包含这个数字的随机浮点数,若再用四 ...

对的,有点学代数的味道吧{:5_117:}

红影 发表于 2022-11-15 15:36

马黑黑 发表于 2022-11-15 11:25
是很基础的东东

对这些基础的不知道,所以才会经常看得一知半解的。

红影 发表于 2022-11-15 15:38

马黑黑 发表于 2022-11-15 11:29
JS的实际应用,看似云里雾里,其实它就像代数,不同的小式子组合、嵌套,有时理不清。不过,一层一层剥开 ...

那需要一个个都知道,然后才能看明白嵌套呢。

红影 发表于 2022-11-15 15:38

马黑黑 发表于 2022-11-15 11:30
对的,有点学代数的味道吧

是的,的确有点。

马黑黑 发表于 2022-11-15 18:13

红影 发表于 2022-11-15 15:38
是的,的确有点。

如果是这样,那就很好接受了

马黑黑 发表于 2022-11-15 18:14

红影 发表于 2022-11-15 15:38
那需要一个个都知道,然后才能看明白嵌套呢。

对,和当初学代数差不多的

马黑黑 发表于 2022-11-15 18:14

红影 发表于 2022-11-15 15:36
对这些基础的不知道,所以才会经常看得一知半解的。
那倒也是,概念先懂,其他的机制才能懂

红影 发表于 2022-11-15 18:50

马黑黑 发表于 2022-11-15 18:13
如果是这样,那就很好接受了

看了这个帖子,感觉对这种随机数明白了。

红影 发表于 2022-11-15 18:51

马黑黑 发表于 2022-11-15 18:14
对,和当初学代数差不多的

现在主要对单个的命令的含义不清楚。

红影 发表于 2022-11-15 18:51

马黑黑 发表于 2022-11-15 18:14
那倒也是,概念先懂,其他的机制才能懂

基础太差,俺还得好好学习{:4_187:}

马黑黑 发表于 2022-11-15 19:15

红影 发表于 2022-11-15 18:51
基础太差,俺还得好好学习

尤其要学习数学

马黑黑 发表于 2022-11-15 19:16

红影 发表于 2022-11-15 18:51
现在主要对单个的命令的含义不清楚。

那是英文问题了

马黑黑 发表于 2022-11-15 19:17

红影 发表于 2022-11-15 18:50
看了这个帖子,感觉对这种随机数明白了。

随机数的核心在于 Math.random(),它不难理解。其他,都是根据需求而“节外生枝”的东东。

任何编程语言,都有随机数,很多语言的随机数比JS设计的精妙

红影 发表于 2022-11-15 20:15

马黑黑 发表于 2022-11-15 19:15
尤其要学习数学

那个学不会了{:4_173:}
页: [1] 2 3 4 5
查看完整版本: JS随机数基础