JavaScript 封装一个输出自定义范围内随机整数的函数 ,点赞加关注持续更新~

封装函数前需要了解两个内置函数

Math.floor()     // 向下取整,例如Math.floor(1.9)输出为1

Math.random()     //输出[ 0,1 ) 左闭右开,之间的随机数

 如何生成0-10的随机整数呢?

Math.floor(Math.random() * (10 + 1)) 

 想一想为什么要乘上(10+1)?因为Math.random() * 10  只能取到[0,9) 之间的数,所以要乘上(10+1),Math.floor()的作用是取整数,这样就能的到[0,10]的随机整数了。

 如何生成5-10的随机整数?

Math.floor(Math.random() * (5 + 1)) + 5   //其实同理可得到

由此我们可以得到一个获取a-b之间整数的通项公式

 Math.floor(Math.random()*(b - a + 1)) + a

 转换成代码如下

 function getRandomNum(a,b){
   let num = Math.floor(Math.random()*(b-a+1))+a
      return num
       }
 

可是还有一个问题,如果使用者不小心将大值写在前面,例如getRandomNum(12,0),那么是不是就会出错?我们再加一个纠错功能,可以使用if语句,添加纠错,这样不管大值在前还是在后,都能正常运行,不影响功能。完整代码如下


function getRandomNum(a, b) {
   if(a>b){          // 用if语句可以纠正大值写在前面的错误
    let temp=a
    a=b
    b=temp
   }
  num = Math.floor(Math.random() * (b - a + 1))+ a
  return num
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 好的,以下是我的回答: 可以使用以下代码实现: function shuffleArray(array) { for (let i = array.length - 1; i > ; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } return array; } 调用函数时,传入一个数组作为参数,函数会返回一个随机排序后的数组。 例如: const myArray = [1, 2, 3, 4, 5]; const shuffledArray = shuffleArray(myArray); console.log(shuffledArray); // [5, 2, 1, 4, 3] (随机排序后的数组) ### 回答2: 要用 JavaScript 封装一个函数来实现对传入的数组元素进行随机排序,可以使用 Fisher-Yates 算法来实现。 ```javascript function randomSort(arr) { for (let i = arr.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); // 生成 0 到 i 之间的随机整数 [arr[i], arr[j]] = [arr[j], arr[i]]; // 交换元素位置 } return arr; } ``` 以上的函数 `randomSort` 接受一个数组作为参数,通过循环从最后一个元素开始,生成一个随机整数 `j`,然后交换当前元素和随机位置 `j` 的元素。重复这个过程直到所有元素都被遍历,最终返回随机排序后的数组 `arr`。 使用方法如下: ```javascript const originalArray = [1, 2, 3, 4, 5]; const randomArray = randomSort(originalArray); console.log(randomArray); // 随机排序后的数组 ``` 以上代码的输出结果将会是一个随机排序的 `randomArray` 数组,例如 `[3, 5, 1, 2, 4]`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十七同志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值