当前位置: 首页 > news >正文

JS中Math.random()方法的使用总结

🔥 前言


Math.random() 这个方法相信大家都知道,是用来生成随机数的。不过一般的参考手册时却没有说明如何用这个方法来生成指定范围内的随机数。下面就来详细的介绍一下Math.random(),以及如何用它来生成制定范围内的随机数。

🔥 Math.random()的介绍


Math.random()方法返回大于等于 0 小于 1 的一个随机数。也就是说,Math.radom()可以获得一个0.0到1.0的随机double值,不包括1.0,即[0.0,1.0)。对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件。

🔥 Math.random()的使用方法


1. 在连续整数中取得一个随机数

值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
例:产生1-10的随机数

var rand1 = Math.floor(Math.random() * 10 + 1);

编写产生startNumber至endNumber随机数的函数

function selectFrom(startNumber, endNumber) {
    var choice = endNumber - startNumber + 1;
    return Math.floor(Math.random() * choice + startNumber)
}
var rand2 = selectFrom(2,8);//产生2至8的随机数

2. 在不相邻整数中取得一个随机数

2.1 在不相邻的两个整数中取得一个随机数

例:随机产生2或4中的一个数

var rand3 = Math.random() < 0.5 ? 2 : 4;

2.2 在不相邻的多个整数中产生一个随机数

结合函数参数数组,可编写在不相邻的多个整数中产生一个随机值的函数

function selectFromMess() {
    return arguments[Math.floor(Math.random() * arguments.length)]
}
//随机产生1、6、8中的一个数
var rand4 = selectFromMess(1, 6, 8);
//也可随机产生文本
var randomTxt1 = selectFromMess("安慰奖", "二等奖", "一等奖");

每次要输入这么多参数比较麻烦,可以改写一下函数

function selectFromMessArray(arr) {
    return arr[Math.floor(Math.random() * arr.length)]
}
var arrayTxt=["一","二","三","四","五"];
var randTxt2 = selectFromMessArray(arrayTxt);

或者不改变原有方法,可以利用apply()这个方法传递数组参数

var randTxt3 = selectFromMess.apply(null,arrayTxt);

关于apply方法的使用可以看js中apply方法的使用详细解析

🔥 Math.random()小结:


Math.random()的使用方法

场景1:随机生成[0.0,11.0)

// 随机生成[0.0,11.0)
var number = Math.random()*11

场景2:随机生成[10.0,15.0]

// 随机生成[10.0,15.0]
var number = 10.0 + Math.random()*(15-10+1)

场景3:随机生成[10.0,15.0)

// 随机生成[10.0,15.0)
var number = 10.0 + Math.random()*(15-10)

由此,我们可以总结一下Math.random()的使用规律

1、随机产生[0.0,1.0)

Math.random();

2、随机产生[0,M)

Math.random()*M;

3、随机产生[M,N)

m+Math.random()*(n-m);

4、随机产生[M,N]

m+Math.random()*(n-m+1);

即:最小值+Math.random()*(最大值-最小值+1);


🔥 应用案例

点击访问:js+css3全屏满天星2023新年快乐动画特效

相关文章:

  • 中国商标注册网查询网官网/seo博客教程
  • 合肥做网站加盟/国内做网站的公司
  • 营销网站推广策略/一套完整的运营方案
  • wordpress阿里云安装目录/设计网站一般多少钱
  • 做网站属于什么备案/搜狗指数官网
  • 长治建设网站公司/seo经典案例分析
  • 《Linux性能优化实战》学习笔记 Day03
  • 如何寻找sqli的思路(SQL注入,时间盲注,盲注字典)
  • 高校数据可视化(智慧校园)
  • [leetcode.29]两数相除,位运算虽好,不要满眼是她
  • 请问想考软考,零基础的话,哪个证书最好考呢
  • 【手写 Vue2.x 源码】第二十九篇 - diff算法-节点比对
  • java后端-servlet超详细入门
  • mysql性能优化二
  • Python学习中的六个技巧小结
  • ejson4cpp——一个使用极致简单且性能可比rapidjson的C++json解析库
  • 《生命3.0》读后感
  • 笔试强训48天——day29