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(),亦可以单独使用),达到用最简单有效的方式实现我们预设的目的。算式的设计,应高度结合实际的应用需求与场景特性。
作为入门介绍,本帖点到为止。感谢阅读!
这个帖子太好了,本来对这一串代码总感觉迷糊,看了这个帖子,清楚多了。谢谢黑黑{:4_187:} Math.random()是0到1的随机浮点数,用它去乘以任何数字,就得到了0到不包含这个数字的随机浮点数,若再用四舍五入取整,就得到了0到这个数字的随机整数。总算整明白这个用法了{:4_173:}{:4_187:} 黑黑多讲点基础的东东,这些讲解真的太好了{:4_199:} 红影 发表于 2022-11-15 10:02
黑黑多讲点基础的东东,这些讲解真的太好了
是很基础的东东 红影 发表于 2022-11-15 09:51
这个帖子太好了,本来对这一串代码总感觉迷糊,看了这个帖子,清楚多了。谢谢黑黑
JS的实际应用,看似云里雾里,其实它就像代数,不同的小式子组合、嵌套,有时理不清。不过,一层一层剥开后,一切都能明了。
像 Math.random() 得到 0 - 0.999... 的浮点数,Math.round(浮点数) 则通过四舍五入得到 浮点数 的整数,两个套起来就是:
Math.round(Math.random()) 红影 发表于 2022-11-15 10:01
Math.random()是0到1的随机浮点数,用它去乘以任何数字,就得到了0到不包含这个数字的随机浮点数,若再用四 ...
对的,有点学代数的味道吧{:5_117:} 马黑黑 发表于 2022-11-15 11:25
是很基础的东东
对这些基础的不知道,所以才会经常看得一知半解的。 马黑黑 发表于 2022-11-15 11:29
JS的实际应用,看似云里雾里,其实它就像代数,不同的小式子组合、嵌套,有时理不清。不过,一层一层剥开 ...
那需要一个个都知道,然后才能看明白嵌套呢。 马黑黑 发表于 2022-11-15 11:30
对的,有点学代数的味道吧
是的,的确有点。 红影 发表于 2022-11-15 15:38
是的,的确有点。
如果是这样,那就很好接受了 红影 发表于 2022-11-15 15:38
那需要一个个都知道,然后才能看明白嵌套呢。
对,和当初学代数差不多的 红影 发表于 2022-11-15 15:36
对这些基础的不知道,所以才会经常看得一知半解的。
那倒也是,概念先懂,其他的机制才能懂 马黑黑 发表于 2022-11-15 18:13
如果是这样,那就很好接受了
看了这个帖子,感觉对这种随机数明白了。 马黑黑 发表于 2022-11-15 18:14
对,和当初学代数差不多的
现在主要对单个的命令的含义不清楚。 马黑黑 发表于 2022-11-15 18:14
那倒也是,概念先懂,其他的机制才能懂
基础太差,俺还得好好学习{:4_187:} 红影 发表于 2022-11-15 18:51
基础太差,俺还得好好学习
尤其要学习数学 红影 发表于 2022-11-15 18:51
现在主要对单个的命令的含义不清楚。
那是英文问题了 红影 发表于 2022-11-15 18:50
看了这个帖子,感觉对这种随机数明白了。
随机数的核心在于 Math.random(),它不难理解。其他,都是根据需求而“节外生枝”的东东。
任何编程语言,都有随机数,很多语言的随机数比JS设计的精妙 马黑黑 发表于 2022-11-15 19:15
尤其要学习数学
那个学不会了{:4_173:}