当我们玩游戏时,随机生成的怪物,宝物大大增加了游戏的乐趣,
所以当我接触到JavaScript时,发现了这个好玩的函数,并决定了解一下它
Math.random()
函数返回一个浮点伪随机数,范围从0开始直到但不包括1 即 [0,1)
如果我需要一个0到3之间的随机数,我可以这么写
function getRandomNum(min, max) {
return Math.floor(Math.random() * (max + 1 - min) + min)
}
解释一下getRandomNum 这个函数,它接收两个参数并返回一个在[min,max]之间的随机数,
Math.floor() 向下取整 它的作用是返回一个浮点数的整数部分(直接忽略小数部分)
例如
Math.random()*(max+1-min) 生成了一个在 [0 ,max+1) 之间的数
然后加上了min 就变成了 [min,max+1) 这个区间内的数
再通过 math.floor() 对这个随机数向下取整 就能够得到 [min,max]之间的数。
我们能用这个函数干些啥呢?
写一个随机生成彩票号码的小程序!
随机生成6个[1,33]区间内的整数, 并且这6个数均不相同
生成随机数很简单,调用getRandomNum()这个函数就行了, 但是如何确保这6个数均不相同呢?
代码如下,涉及数组去重
function getLotteryNum(min, max, num) {
let arr = [];
while (arr.length < num) {
let number = getRandomNum(min, max);
arr.push(number)
/* 遍历添加了元素后的数组 如果发现有重复的数
* 说明刚才添加的数 和前面已存在的数相同
* 这时就用pop方法删除刚添加的数 进入下一次循环。*/
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] == number) {
arr.pop();
}
}
}
return arr;
}
简单测试一下:
效果还阔以,(至少我是这么认为的)
简单的应用过后,再来了解一下 Math.random() 这个函数吧 摘自 MDN 上的解释
Math.random()
函数返回一个浮点, 伪随机数在范围[0,1),也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。
前面的我都看懂了,但是这个初始种子是咋回事?啥是种子? 种子是啥?