网站首页 » 前端开发 » JavaScript » 纯 JavaScript 生成随机数方法
上一篇:
下一篇:

纯 JavaScript 生成随机数方法

前言

用到随机数的地方还是挺多的,如有些网站为了吸引用户就会对网站文章的点赞数,评论数,阅读数等等作出一个可观的数字,让别人看起来觉得不点都不舒服,虽然把随机数用到这里有点不好,但这种现象确确实实存在于我们的生活中。随机数除了这个用途外,其实还有很多方面会用到它。下面我们变来了解下如何通过 JavaScript 生成一个随机数。

相关方法

在说随机数之前我们先来了解JavaScript 中的几个简单的方法。

Math.random()Math.round()parseInt()Math.floor()Math.ceil()。没错就是这四个方法,你只需要把它们作简单的组合,就可以实现随机数了。

Math.random()方法可返回介于 0 ~ 1 之间的一个随机数。

Math.round(x):这个方法就是我们数学中的四舍五入法。x为必需,且必须是数字。

parseInt(string, radix)函数可解析一个字符串,返回一个整数。

String为必需值,即要被解析的字符串。
radix:为可选值,表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

Math.floor(x):x为必需值,可以是任意数值或表达式。floor() 方法可对一个数进行下舍入也就是我们常常说的向上取整。

Math.ceil(x): x为必需值,且必须是一个数值。ceil() 方法可对一个数进行上舍入

生成随机数

好了,有了上面的铺垫,我们现在就可以来聊聊随机数了。

0~1

产生一个0到1的随机数(包括0,不包含1)

var rNum = Math.random();

0或1

产生一个0或者1的随机数

var rNum = Math.round(Math.random());

1~10

产生一个1到10的随机数

var rNum = Math.ceil(Math.random()*10);

ceil()方法作用就是向上取整。

0~10

利用Math.round()方法的特性,我们可以通过它来产生一个0到10的随机数(包括0和10)

var rNum = Math.round(Math.random()*10);

0~n

同样的,我们可以以此类推,生成一个0到n的随机数

var rNum = Math.round(Math.random()*n);

你可以通过更改 n 来生成一个指定区间的随机数。

n~m

生成一个特定区间的随机数(包括n和m)

var rNum = Math.floor(Math.random()*(max-min+1)+min); //方法一
var rNum = Math.round(Math.random()*(max-min)+min); //方法二

max:最大值,min:最小值。

封装函数

为让方便日后使用,我们也可以对上面的代码进行封装,如:

function randomNum(min,max) {
    var rNum = Math.floor(Math.random()*(max-min+1)+min);
    return rNum;
}

生成一个介于 min 和 max 之间的的个可断片小数,什么意思。

比如,有时候我们想生成一个-1 到 1 之间的随机数,但又不是这个随机数太靠近 0。这样的场景很常见,比如:这个随机数用作运动速度,如果过于靠近 0 就相当于速度非常地慢。
所以我们需要一个方法来避免产生一个过行接近 0 的随机数。

思路也很简单,我们通过 Math.random() > 0.5 来决定将要生成的随机数是一个正数,还是一个负数。然后我们只需要传比如:0.5,1,那么这个函数就会帮你生成一个-1到-0.5和0.5到1的一个随机数中间的-0.5到0.5永远不会出现在我们的结果中。

function random (min, max) {
    return Math.random() > 0.5 ? ramdomNumber(min, max) : -ramdomNumber(min, max);
}

function ramdomNumber(min, max) {
    var result = 0;
    result = Math.random() * (max - min) + min;
    return result;
}
console.log(random(0.5,1)); // -0.5357383692845004

随机数的生成就跟大家分享到这里,其实除了随机数外,我们还可以试试生成随机字母,甚至生成随机字母数字的组合,又或者生成随机字符串。

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/javascript-random-number/

Leave a Reply

Your email address will not be published. Required fields are marked *

评论 END