js生成随机数

js 可以使用 Math(算数) 对象来实现随机数的生成。         

一、生成随机数相关 Math 方法 

方法描述
ceil(x)用于对数进行上舍入,即向上取整
floor(x)函数用于对 x 进行下舍入,即向下取整
round(x)函数用于四舍五入
random()返回 0 ~ 1 之间的随机数,包含 0 不包含 1

           基本实例如下:    

// 获取从 1 到 10 的随机整数,取 0 的概率极小。
var randomInt = Math.ceil(Math.random() * 10);
console.log(randomInt);

// 可均衡获取 0 到 1 的随机整数。
var randomInt2 = Math.round(Math.random());
console.log(randomInt2);

// 可均衡获取 0 到 9 的随机整数。
var randomInt3 = Math.floor(Math.random() * 10);
console.log(randomInt3);

// 基本均衡获取 0 到 10 的随机整数,其中获取最小值 0 和最大值 10 的几率少一半。
var randomInt4 = Math.round(Math.random() * 10);
console.log(randomInt4);

         我们可以使用Math.random()函数。这个函数返回一个介于 [0,1) (包括0,不包括1)之间的随机浮点数。

// 生成一个0到1之间的随机数
var randomNumber = Math.random();
console.log(randomNumber);

二、生成 [n,m] 的随机整数

代码如下:

function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

var n = 10; // 最小值
var m = 20; // 最大值
var randomInt = getRandomInt(n, m);
console.log(randomInt);

        我们定义了一个名为 getRandomInt() 的函数,该函数接受两个参数 minmax,并返回一个在 minmax 之间的随机整数。我们使用 Math.ceil() 函数将 min 向上取整,使用 Math.floor() 函数将 max 向下取整,然后使用 Math.random() 函数生成一个介于 0 和 1 之间的随机数,并将其乘以 (max - min + 1),再加上 min,最后使用 Math.floor() 函数将其向下取整得到最终的随机整数。

三、代码详解

为什么乘以 (max - min + 1),再加上 min的原因:(m=max,m=min)

  1. 乘以 (𝑚−𝑛+1):

    • Math.random() 函数返回一个介于 0(包括0)和1(不包括1)之间的随机浮点数。
    • 当我们将这个随机浮点数乘以 (𝑚−𝑛+1),我们实际上是在扩展这个随机数的范围,使其覆盖从 n 到 m 的所有整数。
    • 例如,如果 n=1 和 m=3,那么m−n+1=3。将Math.random() 的结果乘以 3 会给我们一个介于 0 和 3 之间的随机数。
  2. 加上 n:

    • 由于 Math.random() 生成的是 [0, 1) 的数,我们需要将它转换为 n 到 m 的范围。
    • 通过将扩展后的随机数加上 𝑛n,我们可以确保结果至少是 n,并且最多是 m。
    • 这样,无论 Math.random() 生成什么值,加上 n 后都会得到一个在 n 和 m 之间的整数。
  3. 使用 Math.floor():

    • Math.random() 生成的是一个浮点数,而我们通常希望生成一个整数。
    • 使用 Math.floor() 函数可以确保我们得到的是一个整数,它会取小于或等于给定数字的最大整数。
    • 这意味着即使 Math.random() 生成了 m 的小数部分,Math.floor() 也会将其转换为 m。
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值