Math.random 了解一下?

当我们玩游戏时,随机生成的怪物,宝物大大增加了游戏的乐趣,

所以当我接触到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),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。

前面的我都看懂了,但是这个初始种子是咋回事?啥是种子? 种子是啥?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值